Ще трябва да преминете през референтния курсор и за всеки ред в него да отпечатате отделните полета. Във вашата актуализирана версия трябва да извлечете курсора в локални скаларни променливи, а не друг референтен курсор:
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;
/
Познах lsn
е число, ако не е, тогава декларирайте това като правилния тип. Ако курсорът върне повече от една колона, тогава ще трябва да декларирате локални променливи за всяка от тях и да ги извлечете всички в тях, дори ако показвате само една от тях.
Ако просто искате да го покажете, тогава можете да използвате променлива за свързване, за да направите това вместо това (маркирано в текущата версия и обратно към 1.5.0):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Имайте предвид, че variable
команда
е не в declare
блок; това е команда на SQL Developer, а не PL/SQL команда. Както е print
, въпреки че и двете са документирани само в документите на SQL*Plus. И също така обърнете внимание на двоеточието в началото на :result
в рамките на блока, което показва, че това е свързваща променлива, а не локална PL/SQL променлива.