使用CallableStatement从存储过程访问数据

时间:2011-07-22 17:20:11

标签: oracle stored-procedures jdbc

我已经写了一个如图所示的存储过程,它将负责给出 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);

//请在这里帮助需要逻辑

2 个答案:

答案 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;