Допустим, есть функция, возвращающая REF CURSOR
В Application Module добавляем в раздел import и в нужный метод следующий код
imports:
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleResultSet;
import java.sql.Connection;
import java.sql.SQLException;
В метод:
CREATE OR REPLACE PACKAGE XX_TST AS TYPE crResultSet is REF CURSOR; function getCursor () return crResultSet; END XX_TST; CREATE OR REPLACE PACKAGE BODY XX_TST AS function getCursor () return crResultSet IS retCursor crResultSet; begin open retCursor for SELECT dummy from dual; return retCursor; end getCursor; END XX_TST;Для того, чтобы получить записи из курсора, нужно использовать метод getObject в классе OracleCallableStatement
В Application Module добавляем в раздел import и в нужный метод следующий код
imports:
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleResultSet;
import java.sql.Connection;
import java.sql.SQLException;
В метод:
try {
Connection conn = getOADBTransaction().getJdbcConnection();
OracleCallableStatement mainSt = (OracleCallableStatement)conn.prepareCall("begin :1 := XX_TST.getCursor(); end;");
mainSt.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.CURSOR);
mainSt.executeQuery();
// Получаем результирующий набор из ref курсора
OracleResultSet mainRs = (OracleResultSet)mainSt.getObject(1);
// Получаем записи из курсора
while (mainRs.next())
{
...
}
} catch (java.sql.SQLException sql_e)
{
}
Комментариев нет:
Отправить комментарий