#plsql #oracle11g
#plsql #oracle11g
Вопрос:
Я создал функцию plsql, и я хочу создать курсор и вернуть этот курсор из функции. Затем я хочу вызвать эту функцию в классе Java и извлечь данные из курсора. Примечание: курсор возвращает одну строку. Я написал что-то вроде этого,,
CREATE OR REPLACE
FUNCTION FUNCTION1 ( emp_id IN NUMBER)RETURN cursor AS
cursor newCursor(e_id number) is
select * from table1 where employee_id = e_id;
type refCursor is ref cursor;
BEGIN
open newCursor(emp_id);
loop
exit when newCursor%notfound;
fetch newCursor into refCursor;
end loop;
RETURN refCursor;
END FUNCTION1;
Какой тип возвращаемого значения я должен использовать, если я хочу вернуть курсор?
Ответ №1:
Смоделируйте его по следующей функции, которая работает
create or replace function getemps return sys_refcursor is
v_curs sys_refcursor;
begin
open v_curs for select ename from emp;
return v_curs;
end;
/
Комментарии:
1. если я хочу передать параметр курсору в этом случае, как я могу это сделать??
2. как это сделать в пакете?
Ответ №2:
sys_refcursor — это общий неявный курсор oracle, вместо этого используйте EXPLICITE cursor