用ORACLE的PLSQL写的存储过程,返回一个游标类型来指向打开的结果集,在JAVA代码里面,对存储过程的这个返回游标进行接收,请问用什么类型?
假如是这样的:
存储过程:
CREATE OR REPLACE PROCEDURE "MY"."TESTPROC" (IDIN IN NUMBER,CUR OUT SYS_REFCURSOR)
AS
BEGIN
OPEN CUR FOR SELECT * FROM MYTABLE WHERE ID=IDIN;
END;
/
java代码:
CallableStatement cstm = conn.prepareCall("CALL TESTPROC(?,?)");
cstm.setInt(1,10);
cstm.registerOutParameter(2,oracle.jdbc.Types.CURSOR);
cstm.execute();
ResultSet rs = (ResultSet)cstm.getObject(2);
....
请问的就是cstm.registerOutParameter(2,oracle.jdbc.Types.CURSOR);中的这个类型我不可以用oracle.jdbc.Types.CURSOR,必须要用java.sql.jdbc.Types中的类型,因为我的项目要兼容mysql数据库,不能依赖于oracle驱动里面的类型。我该用哪个类型呢?请问?
假如是这样的:
存储过程:
CREATE OR REPLACE PROCEDURE "MY"."TESTPROC" (IDIN IN NUMBER,CUR OUT SYS_REFCURSOR)
AS
BEGIN
OPEN CUR FOR SELECT * FROM MYTABLE WHERE ID=IDIN;
END;
/
java代码:
CallableStatement cstm = conn.prepareCall("CALL TESTPROC(?,?)");
cstm.setInt(1,10);
cstm.registerOutParameter(2,oracle.jdbc.Types.CURSOR);
cstm.execute();
ResultSet rs = (ResultSet)cstm.getObject(2);
....
请问的就是cstm.registerOutParameter(2,oracle.jdbc.Types.CURSOR);中的这个类型我不可以用oracle.jdbc.Types.CURSOR,必须要用java.sql.jdbc.Types中的类型,因为我的项目要兼容mysql数据库,不能依赖于oracle驱动里面的类型。我该用哪个类型呢?请问?
CallableStatement cstm = conn.prepareCall("{CALL TESTPROC(?,?)}");
cstm.setInt(1,10);
cstm.registerOutParameter(2,Types.CURSOR);
cstm.execute();
ResultSet rs = (ResultSet)cstm.getObject(2);
关注下。你可以用ResultSet进行接受,也可以用中间件的Map进行接受啊。