Oracle 11g、Java 8、OJDBC8/OJDBC7
create or replace procedure foo(employeeId IN number, c OUT SYS_REFCURSOR) AS
BEGIN
open c for select * from Employee where id = employeeId;
END;
CallableStatement statement = connection.prepareCall("{call foo(?,?)}");
statement.setObject(1, 100);
statement.registerOutParameter(2, java.sql.Types.REF_CURSOR); // ERROR here
statement.execute();
java.sql.SQLException: Invalid column type: 2012
使用Oracle11g尝试ojdbc7和ojdbc8,出现相同错误。
Oracle11g支持RefCursor。Java8定义了types.ref_cursor。对于11g我应该使用哪个oracle jdbc驱动程序?
我在我的项目中使用了这段代码,它工作得很好
@Override
public ResultSet getCorrespondenceDetail(Long id) {
String sql="{call dbpk_person_correspondence.get_report_detail(?,? )}";
Connection conn = JDBCUtility.getConnection();
ResultSet result = null;
CallableStatement cstmt;
try {
cstmt = conn.prepareCall(sql);
cstmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cstmt.setLong(2,id);
cstmt.execute();
result = (ResultSet)cstmt.getObject(1);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
项目依赖项:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
我在Oracle中有一个存储过程,如下所示。 我正在从Java调用该过程。我的密码是, 即使我正在获取记录,值也是空的。这意味着如果输出为2行,则while条件执行并打印为空。在SQL Developer中,它工作得很好。提前道谢。
我可以在Oracle中通过ODBC执行一批存储过程吗?存储过程具有我使用参数标记绑定的输入参数。 在SQLServer中,我有这个功能,在DB2中,我只能进行批处理插入/更新,但我不能从ODBC/C代码批处理存储过程。 Oracle似乎支持插入语句的批处理,如果使用JDBC,也可以批处理存储过程。 是否可以做同样的事情,但使用对存储过程和ODBC的调用? 谢谢
我是Oracle的初学者,我声明了这个对象类型: 我希望在我的存储过程中使用该对象: 但是当编译过程时,我得到了这个错误: 错误(2,14):PLS-00201:必须声明标识符“T1” 我怎样才能写出正确的程序?谢谢大家。
现在,问题是,虽然我可以获得存储过程返回的结果,但该结果没有转换为Java类(TNapraviNalog),所以我必须手动执行此操作。我可以用TNapraviNalog的实例(stmt.SetObject(1,ParamValues.get(0));)成功调用Oracle过程,但无法将结果转换为TNapraviNalog。我真的很想有一个 但是,这一行会导致异常(java.lang.ClassCa
为了使用Oracle存储过程学习Hibernate4.1,我尝试使用一个尽可能简单的示例:1。%2中没有传递参数。SYS_REFCURSOR作为一个返回参数 我得到的是一个异常:“org.hibernate.exception.GenericJDBcException:无效列索引”。在网上搜索几个小时来解决这个问题并没有什么帮助。 ================================异
我需要对一个参数为PL/SQL表的过程进行JDBC调用。我正在尝试结构对象。但是我没有做正确的事情。我得到错误: ORA-04043:对象“斯科特”。“对象列表结构”不存在。 以下是代码片段: 参数“?”对于本程序,类型为: 我们非常感谢任何能让我们成功的见解谢谢