Anda perlu mengulang kursor ref dan untuk setiap baris di dalamnya, cetak masing-masing bidang. Dalam versi terbaru Anda, Anda perlu mengambil kursor ke variabel skalar lokal, bukan kursor referensi lain:
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;
/
Saya sudah menebak lsn
adalah angka, jika tidak maka nyatakan itu sebagai tipe yang tepat. Jika kursor mengembalikan lebih dari satu kolom, maka Anda perlu mendeklarasikan variabel lokal untuk masing-masing kolom dan mengambil semuanya ke dalamnya, meskipun Anda hanya menampilkan salah satunya.
Jika Anda hanya ingin menampilkannya, Anda dapat menggunakan variabel bind untuk melakukannya (diperiksa di versi saat ini dan kembali ke 1.5.0):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Perhatikan bahwa variable
perintah
adalah tidak di declare
memblokir; itu adalah perintah Pengembang SQL, bukan perintah PL/SQL. Seperti print
, meskipun keduanya hanya didokumentasikan dalam dokumen SQL*Plus. Dan perhatikan juga titik dua di awal :result
di dalam blok, yang menunjukkan bahwa itu adalah variabel pengikat, bukan variabel PL/SQL lokal.