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;/
-
Tambahkan data yang hilang dari bulan atau tahun sebelumnya secara kumulatif
-
Oracle:Bagaimana cara mengetahui apakah ada transaksi yang tertunda?
-
Bagaimana Cara Menaikkan Pengecualian di PL/SQL?
-
Mencetak nilai variabel di SQL Developer
-
Menggunakan variabel ikat dengan klausa SELECT INTO dinamis di PL/SQL