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

ambil dari fungsi mengembalikan kursor ref untuk merekam

Saya menduga bahwa Anda berpikir bahwa kursor Anda harus mengambil baris dari REFCURSOR. Ini bukan. REFCURSOR itu sendiri adalah kursor, Anda tidak menggunakan kursor lain untuk memilihnya.

Apa yang dilakukan kursor Anda saat ini adalah mengambil satu baris, dengan satu kolom, yang berisi hasil pemanggilan fungsi. Yang merupakan record_cursor bukan record_name , sehingga Anda mendapatkan ketidakcocokan jenis.

Saya menduga apa yang sebenarnya ingin Anda lakukan adalah seperti ini:

declare
  symbol_cursor  package_name.record_cursor;
  symbol_record  package_name.record_name;
begin
  symbol_cursor := package_name.function_name('argument');
  loop
    fetch symbol_cursor into symbol_record;
    exit when symbol_cursor%notfound;

    -- Do something with each record here, e.g.:
    dbms_output.put_line( symbol_record.field_a );

  end loop;

  CLOSE symbol_cursor;

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. Bagaimana Anda mengetahui URL database Oracle?

  2. Oracle/Sybase SQL - dapatkan nilai berdasarkan catatan sebelumnya (bukan LAG sederhana)

  3. Perbedaan antara literal N'String' vs U'String' di Oracle

  4. .Net - Membuat recordset Sesuai Permintaan daripada menarik semuanya ke dalam memori sekaligus

  5. hubungkan dengan klausa di regex_substr