Tag: plsql

如何在JDBC中调用存储过程

对于家庭作业,我必须创建一个pl / sql存储过程来将一个facutly成员添加到数据库 CREATE OR REPLACE PROCEDURE ADDFACULTYDEPTSAL (facid IN NUMBER, facname IN VARCHAR, depID IN NUMBER) AS sal NUMBER; BEGIN CALCSALDEPT(depID, sal); IF sal >= 50000 THEN sal := sal*.9; ELSE IF sal >= 30000 THEN sal := sal*.8; END IF; END IF; INSERT INTO FACULTY(fid, fname, deptid, salary) VALUES(facid, facname, depID, sal); END […]

使用JDBC将SYS_REFCURSOR作为IN参数调用PL / SQL过程

我试图理解如何调用PL / SQL过程,该过程将SYS_REFCURSOR作为IN参数。 请考虑以下PL / SQL过程: print_cursor_contents(myCursor SYS_REFCURSOR , row_count OUT NUMBER); 在将值绑定到IN参数时,我使用setXXX方法? 给我一个带有单独游标记录字段的java类,因为它的成员和这个类的实例数组似乎是表示plsql CURSOR的正确方法。 当我这样做时,我得到一个SQLException: 我使用了以下set方法 callStmt.setObject(1, curRec); 以下是使用上述语句时的例外情况: Exception occured in the database Exception message: Invalid column type java.sql.SQLException: Invalid column type at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8921) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8396) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9176) at oracle.jdbc.driver.OracleCallableStatement.setObject(OracleCallableStatement.java:5024) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:234) at com.rolta.HrManager.printMaxSalAllDept(HrManager.java:1022) at com.rolta.HrManager.main(HrManager.java:1116) Database error code: 17004

如何将数组从Java返回到PL / SQL?

从PL / SQL到Java来回传递数字和字符串没有问题,但是如何传递数组呢? 我从PL / SQL调用Java – 而不是其他方式。 下面是get_widgets_as_string按预期工作的示例。 如何为so19j.get_widgets_as_array()编写PL / SQL 调用规范 ,以便我可以从PL / SQL调用它? 我已经阅读了发布带有调用规范的Java类 ,我可以看到嵌套表对应于oracle.sql.ARRAY ,但是我无法使它工作。 我可能错过了一些微不足道的细节,因为我不是Java程序员。 create or replace and compile java source named “so19j” as import java.lang.*; public class so19j { public static String get_widgets_as_string() { String widgets = “foo;bar;zoo”; return widgets; } public static String[] get_widgets_as_array() { String[] widgets […]

从Oracle存储过程访问Web服务

是否有人从Oracle存储过程成功访问过Web服务? 如果是这样,它是Java存储过程吗? PL / SQL存储过程? 我有什么理由不尝试从存储过程中访问WS? 这是我到目前为止发现的一些参考文献 数据库Web服务 从Java存储过程调用外部Web服务 ..澄清一下,这是针对SOAP调用的

如何将任意参数发送到Oracle触发器?

目的是向Web应用程序中的当前用户ID等触发器发送额外信息。 由于使用了连接池,并且所有连接都使用相同的用户ID,如何将原始Web用户ID传递给触发器? 这需要在不触及应用程序代码的情况下实现。 它是一个基于Java的应用程序。 约翰

使用JDBC从dbms_output.get_lines获取输出

如何在不使用数据库创建其他对象的情况下使用JDBC从Java应用程序中获取Oracle dbms_output.get_lines的输出?

Oracle在Java中的RETURNING INTO使用(JDBC,Prepared Statement)

我正在使用JDBC来执行如下所示的Oracle语句: “INSERT INTO MYTABLE(MYDATA) VALUES(?) RETURNING MY_CALCULATED_DATA INTO ?” // MYTABLE’s def makes MY_CALCULATED_DATA be auto-generated by DB on insert 我找到了几种在Java中调用上述语句的方法,主要是: 使用OraclePreparedStatement: ps = (OraclePreparedStatement)conn.prepareStatement(sql); ps.setString(1, “myvalue”); ps.registerReturnParameter(2, Types.VARCHAR); ps.execute(); rs = ps.getReturnResultSet(); rs.next(); System.out.print(rs.getString(1)); 使用CallableStatement: cs = conn.prepareCall(sql); cs.setString(1, “myvalue”); cs.registerOutParameter(2, Types.VARCHAR); cs.execute(); System.out.print(cs.getString(1)); 问题: 方法#2抛出“SQLException:并非所有返回参数都已注册” , 但是 ,如果我将SQL语句包装成“ BEGIN..END; ” – 则方法#2工作正常。 为什么方法#1在没有“ […]

如何将数组列表拆分成相等的部分?

无论如何将ArrayList拆分成不同的部分而不知道它的大小直到运行时? 我知道有一种叫做的方法: list.subList(a,b); 但我们需要明确提到盯着和结束范围的清单。 我的问题是,我们得到一个包含帐号的arraylist,其中包含2000,4000个帐号的数据(编码时间内不会知道数字),我需要将此符号传递给PL / SQL的IN查询,如IN不支持超过1000个值,我试图分成多个块并将其发送到查询 注意:我不能使用像番石榴等任何外部库.. :(在这方面的任何指南表示赞赏。

执行匿名pl / sql块并在java中获取结果集

我想执行匿名PL / SQL并需要获取结果集对象。 我得到的代码可以通过在PL / SQL块中使用游标来完成。 但PL / SQL块本身将作为文本来自数据库。 所以我无法编辑那个PL / SQL块。 并且它将仅返回两个值,其列名将始终相同。 它将返回2列组合值的列表。 这里我给出了PL / SQL示例。 BEGIN RETURN ‘select distinct fundname d, fundname r from where condition order by 1’; EXCEPTION WHEN OTHERS THEN RETURN ‘SELECT ”Not Available” d, ”Not Available” r FROM dual’; END; 任何回复都会非常有帮助。

如何将List从java传递给Oracle程序?

我想从Java发送一个List到Oracle程序。 例如,有一所学校,学校有一份学生名单。 此外,学生还有一个讲座列表。 我创建了一个讲座列表,一个列有讲座列表的学生列表,一个学校列出了学生列表。 讲座。 ArrayList lecture1 = new ArrayList(); lecture1.add(“Mat”); lecture1.add(“physics”); ArrayList lecture2 = new ArrayList(); lecture2.add(“English”); lecture2.add(“Spanish”); ArrayList lecture3 = new ArrayList(); lecture3.add(“Germany”); lecture3.add(“French”); 讲座清单。 ArrayList<ArrayList> lectureList1 = new ArrayList<ArrayList>(); lectureList1.add(lecture1); lectureList1.add(lecture3); ArrayList<ArrayList> lectureList2 = new ArrayList<ArrayList>(); lectureList2.add(lecture2); lectureList2.add(lecture3); 和讲座的学生名单。 ArrayList<ArrayList> StudentList = new ArrayList<ArrayList>(); StudentList.addAll(lectureList2); StudentList.addAll(lectureList2); ArrayList<ArrayList> StudentList2 = new ArrayList<ArrayList>(); StudentList2.addAll(lectureList1); […]