我已经写了一个如图所示的存储过程,它将负责给出 EMployee数字列表
create or replace procedure
kiran
as
CURSOR cur is select * from emp;
TEMPCUR cur%rowtype;
begin
open cur;
loop
fetch cur into TEMPCUR;
DBMS_OUTPUT.PUT_LINE(TEMPCUR.empno);
exit when cur%NOTFOUND;
end loop;
close cur;
end;
/
请告诉我如何从JDBC程序中检索这些值
callableStatement = dbConnection.prepareCall(kiran);
//请在这里帮助需要逻辑
答案 0 :(得分:1)
您无法完全按照列出的步骤进行操作,但如果更改过程以返回引用光标,则可以轻松完成。有很多这样做的例子。以下是Google搜索结果中的第一个:http://www.enterprisedt.com/publications/oracle/result_set.html。
修改强>
根据更改的存储过程定义,JDBC命令如下所示:
{? = call test}
您必须使用此命令创建CallableStatement,注册Oracle REF CURSOR类型的out参数并执行它。您将获得结果作为第一个输出参数:
ResultSet rs = (ResultSet)stmt.getObject(1);
答案 1 :(得分:0)
这是你如何做到的。请记住,我的示例中的最后一个参数实际上是在PL / SQL过程中声明为“OUT”参数,例如要以参数形式返回的值):
conn ---是连接对象
cstmt ---这是一个callablestatement
cstmt = conn.getNewCallableStatement("{call MY_PLSQL_PACKAGE.MY_PROC(?,?,?)}");
cstmt.setString(1, stringOutput1);
cstmt.setString(2, stringOutput2);
cstmt.registerOutParameter(3, OracleTypes.CURSOR);
cstmt.execute;