ORACLE存储过程:
CREATE OR REPLACE PROCEDURE "SCOTT"."TESTPROC"(CUR OUT SYS_REFCURSOR)
AS
BEGIN
OPEN CUR FOR SELECT * FROM TEST_TABLE;
END;
/JAVA代码:
String sql="{CALL TESTPROC(?)}"
CallableStatement cstm=conn.preparedStatement();
cstm.regersitOutPagameter(1,oracle.jdbc.OracleTypes.CURSOR);
cstm.execute();
ResultSet rs=(ResultSet)cstm.getObject(1);
while(rs.next){
System.out.println(rs.getString("NAME"));
}
问题描述:
TEST_TABLE中记录数是0;表结构是:ID NUMBER(10),NAME VARCHAR2(100)
抛出异常:CURSOR IS CLOSED!
原因是表中记录数是0,现在想不在存储过程中计算记录数来判断是否有记录,而是想在JAVA代码中通过某个方法来判断游标是否打开,可否?!
CREATE OR REPLACE PROCEDURE "SCOTT"."TESTPROC"(CUR OUT SYS_REFCURSOR)
AS
BEGIN
OPEN CUR FOR SELECT * FROM TEST_TABLE;
END;
/JAVA代码:
String sql="{CALL TESTPROC(?)}"
CallableStatement cstm=conn.preparedStatement();
cstm.regersitOutPagameter(1,oracle.jdbc.OracleTypes.CURSOR);
cstm.execute();
ResultSet rs=(ResultSet)cstm.getObject(1);
while(rs.next){
System.out.println(rs.getString("NAME"));
}
问题描述:
TEST_TABLE中记录数是0;表结构是:ID NUMBER(10),NAME VARCHAR2(100)
抛出异常:CURSOR IS CLOSED!
原因是表中记录数是0,现在想不在存储过程中计算记录数来判断是否有记录,而是想在JAVA代码中通过某个方法来判断游标是否打开,可否?!
我想会不会是oracle没的cursor没记录集的时候自动关闭游标、
AS
default_c SYS_REFCURSOR;
BEGIN
OPEN CUR FOR SELECT * FROM AA;
if CUR%rowcount = 0 then
CUR:=default_c;
end if;
END;定义一个默认空游标,没数据就返回它呗
问题应该出在存储过程,你的存储过程不是这么简单吧,里面是不是有临时表呀。