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

Contoh Untuk Kursor PLSQL - Kursor Eksplisit, Implisit, dan Ref

Kursor bertindak secara logis sebagai penunjuk ke set hasil. Anda dapat memindahkan kursor melalui kumpulan hasil, memproses setiap baris, hingga Anda menentukan bahwa Anda berada di akhir kumpulan hasil. Ada tiga jenis sintaks yang terkait dengan kursor:membuat kursor, mengambil dengan kursor, dan menutup kursor. Selain itu, ada sejumlah atribut kursor yang dapat Anda gunakan dalam perbandingan logis Anda. Berikut ini adalah jenis-jenis Cursor pada Oracle:

Cursor Eksplisit

Explicit Cursors adalah kursor yang Anda deklarasikan dan gunakan.

kursor implisit

PL/SQL memungkinkan Anda untuk memasukkan pernyataan SQL, termasuk pernyataan SELECT, sebagai bagian dari kode Anda tanpa mendeklarasikan kursor, yang disebut kursor implisit.

Ref Cursors

Kursor mereferensikan kumpulan hasil. KURSOR REF memungkinkan Anda untuk meneruskan referensi kursor dari satu unit program PL/SQL ke unit lainnya. Dengan kata lain, ini memungkinkan Anda untuk membuat variabel yang akan menerima kursor dan memungkinkan akses ke set hasilnya, tetapi di blog ini saya hanya memberikan contoh untuk Kursor Eksplisit dan Implisit, saya akan memberikan contoh untuk Kursor Ref dan Kursor Dinamis di blog lain .Contoh Explicit Cursor:DECLARE nemployeeid NUMBER; dstartdate TANGGAL; tanggal TANGGAL; sjobid VARCHAR2 (20); -- nyatakan kursor CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN BUKA pekerjaan lama; LOOP FETCH curjob INTO nemployeeid, dstartdate, denddate, sjobid; KELUAR KETIKA curjob%TIDAK DITEMUKAN; DBMS_OUTPUT.put_line( 'Karyawan ' || nemployeeid || 'punya pekerjaan ' || sjobid || ' untuk ' || (tanggal akhir - dstartdate) || ' hari.'); AKHIR LOOP; CLOSE curjob;END;/Contoh yang sama diberikan di bawah ini untuk kursor eksplisit tetapi dengan For Loop, kursor For Loop lebih pintar karena tidak perlu mendeklarasikan variabel untuk mengambil nilai di dalamnya dan tidak perlu membuka atau menutup atau memeriksa apakah penunjuk berada di ujung kursor. Berikut ini contohnya:DECLARE CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN FOR jh_rec IN curjob LOOP DBMS_OUTPUT.put_line( ''Employee ' || jh_rec.employee_id || ' had job ' || jh_rec .job_id || ' untuk ' || ( jh_rec.end_date - jh_rec.start_date || ' hari.')); END LOOP;END;/Contoh Kursor Implisit:DECLARE nempno NUMBER; CURSOR curjob IS SELECT employee_id, start_date, end_date, job_id FROM hr.job_history;BEGIN -- di bawah query sql adalah jenis Implicit Cursor SELECT COUNT ( * ) INTO nempno FROM hr.job_history; DBMS_OUTPUT.put_line ( 'Ada ' || nempno || ' catatan riwayat karyawan.'); UNTUK jh_rec IN Curjob LOOP DBMS_OUTPUT.put_line( ''Karyawan ' || jh_rec.employee_id || ' punya pekerjaan ' || jh_rec.job_id || ' untuk ' || ( jh_rec.end_date - jh_rec.start_date || ' hari.' )); ULANG AKHIR;AKHIR;/

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan data yang hilang dari bulan atau tahun sebelumnya secara kumulatif

  2. Oracle:Bagaimana cara mengetahui apakah ada transaksi yang tertunda?

  3. Bagaimana Cara Menaikkan Pengecualian di PL/SQL?

  4. Mencetak nilai variabel di SQL Developer

  5. Menggunakan variabel ikat dengan klausa SELECT INTO dinamis di PL/SQL