Как я могу создать и вернуть курсор из функции plsql?

#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