Musiałbyś zapętlić kursor ref i dla każdego znajdującego się w nim wiersza wydrukować poszczególne pola. W zaktualizowanej wersji musisz pobrać kursor do lokalnych zmiennych skalarnych, a nie do innego kursora referencyjnego:
set serveroutput on;
declare
result sys_refcursor;
lsn number; -- guessing the data type
begin
emp.emp360_utils.GET_EMPLOYEEs(222334,result);
loop
fetch result into lsn; -- and other columns if needed
exit when result%notfound;
dbms_output.put_line(lsn);
end loop;
end;
/
Zgadłem lsn
jest liczbą, jeśli nie, to zadeklaruj ją jako właściwy typ. Jeśli kursor zwróci więcej niż jedną kolumnę, będziesz musiał zadeklarować zmienne lokalne dla każdej z nich i pobrać je wszystkie do nich, nawet jeśli wyświetlasz tylko jedną z nich.
Jeśli chcesz go tylko wyświetlić, możesz zamiast tego użyć zmiennej bind (zaznaczonej w bieżącej wersji i z powrotem do 1.5.0):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Pamiętaj, że variable
polecenie
jest nie w declare
blok; jest to polecenie SQL Developer, a nie polecenie PL/SQL. Tak jak print
, chociaż oba są udokumentowane tylko w dokumentacji SQL*Plus. Zwróć też uwagę na dwukropek na początku :result
wewnątrz bloku, co wskazuje, że jest to zmienna wiązania, a nie lokalna zmienna PL/SQL.