Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menggunakan record untuk mengulang kursor ref?

Anda tidak dapat menentukan jenis rekaman berdasarkan KURSOR REF yang diketik dengan lemah. Karena jenis kursor yang ditentukan dalam paket dapat digunakan untuk mengembalikan data dari kueri arbitrer dengan kolom arbitrer, kompiler PL/SQL tidak dapat menentukan jenis catatan yang sesuai untuk mengambil data.

Jika Anda mengetahui data aktual yang dikembalikan dari fungsi tersebut, Anda dapat mendeklarasikan catatan jenis tersebut untuk mengambil data. Misalnya, jika saya mendeklarasikan fungsi yang mengembalikan tipe kursor yang diketik dengan lemah tetapi saya tahu bahwa kursor benar-benar mengembalikan kursor berdasarkan EMP tabel, saya dapat mengambil data ke dalam EMP%ROWTYPE record (perhatikan bahwa SYS_REFCURSOR adalah tipe REF CURSOR tipe lemah yang ditentukan sistem)

create or replace function f1
  return sys_refcursor
is
  l_rc sys_refcursor;
begin
  open l_rc
   for select *
         from emp;
  return l_rc;
end;

declare
  l_rc sys_refcursor;
  l_emp emp%rowtype;
begin
  l_rc := f1;
  loop
    fetch l_rc into l_emp;
    exit when l_rc%notfound;
    dbms_output.put_line( l_emp.empno );
  end loop;
end;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan Excel VBA ke Oracle DB menggunakan 'ODBC'

  2. Mengurangi Jumlah Hari dari Tanggal di PL/SQL

  3. ORACLE TRIGGER MASUKKAN KE ... (PILIH * ...)

  4. cara memindahkan template sidik jari ke database oracle

  5. Oracle Spatial - pilih objek yang berada di dalam area