Доступ к данным из хранимой процедуры с помощью CallableStatement - PullRequest
0 голосов
/ 22 июля 2011

Я написал хранимую процедуру, как показано, которая будет отвечать за список номеров сотрудников

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 ]

1 голос
/ 22 июля 2011

Вы не можете сделать это точно с помощью процедуры, которую вы перечислили, но вы можете легко сделать это, если вы измените свою процедуру, чтобы вернуть ref курсор. Есть множество примеров этого. Вот первый из результатов поиска Google: http://www.enterprisedt.com/publications/oracle/result_set.html.

EDIT:

На основании измененного определения хранимой процедуры команда JDBC будет выглядеть следующим образом:

{? = call test}

Вам нужно будет создать CallableStatement с помощью этой команды, зарегистрировать выходной параметр типа Oracle REF CURSOR и выполнить его. Вы получите результаты в качестве первого выходного параметра:

            ResultSet rs = (ResultSet)stmt.getObject(1);
0 голосов
/ 27 июля 2011

Вот как ты это делаешь. Помните, что последний параметр в моем примере фактически объявлен в процедуре PL / SQL как параметр «OUT», например, значение, которое вы хотите вернуть в виде параметра):

conn --- это объект соединения

cstmt --- это вызываемое заявление

   cstmt = conn.getNewCallableStatement("{call MY_PLSQL_PACKAGE.MY_PROC(?,?,?)}");
           cstmt.setString(1, stringOutput1);
           cstmt.setString(2, stringOutput2);
           cstmt.registerOutParameter(3, OracleTypes.CURSOR);
           cstmt.execute;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...