Oracle 11g、Java 8、ojdbc8/ojdbc7
带有 OUT REF_CURSOR 的存储过程,例如,
create or replace procedure foo(employeeId IN number, c OUT SYS_REFCURSOR) AS
BEGIN
open c for select * from Employee where id = employeeId;
END;
从 sqlplus,它工作正常。
JDBC调用过程:
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
类型 2012 是 Types.REF_CURSOR。
使用 oracle 11g 尝试了 ojdbc7 和 ojdbc8,同样的错误。
Oracle 11g 支持 REFCURSOR。java 8 定义了 Types.REF_CURSOR。我应该为 11g 使用哪个 oracle jdbc 驱动程序?