Oracle PL / SQL Cursor: Implisit, Eksplisit, Cursor FOR Loop (Contoh)

Daftar Isi:

Anonim

Apa CURSOR di PL / SQL?

Kursor adalah penunjuk ke area konteks ini. Oracle membuat area konteks untuk memproses pernyataan SQL yang berisi semua informasi tentang pernyataan tersebut.

PL / SQL memungkinkan programmer untuk mengontrol area konteks melalui kursor. Kursor menahan baris yang dikembalikan oleh pernyataan SQL. Kumpulan baris yang dipegang kursor disebut sebagai set aktif. Kursor ini juga dapat diberi nama sehingga dapat dirujuk dari tempat kode lain.

Dalam tutorial ini Anda akan belajar-

  • Kursor Tersirat
  • Kursor Eksplisit
  • Atribut Kursor
  • UNTUK pernyataan Kursor Loop

Kursor terdiri dari dua jenis.

  • Kursor Tersirat
  • Kursor Eksplisit

Kursor Tersirat

Setiap kali operasi DML terjadi dalam database, kursor implisit dibuat yang menahan baris yang terpengaruh, dalam operasi tersebut. Kursor ini tidak dapat dinamai dan, karenanya, tidak dapat dikontrol atau dirujuk dari tempat kode lain. Kita hanya dapat merujuk ke kursor terbaru melalui atribut kursor.

Kursor Eksplisit

Pemrogram diizinkan untuk membuat area konteks bernama untuk menjalankan operasi DML mereka untuk mendapatkan kontrol lebih besar atasnya. Kursor eksplisit harus ditentukan di bagian deklarasi blok PL / SQL, dan dibuat untuk pernyataan 'PILIH' yang perlu digunakan dalam kode.

Di bawah ini adalah langkah-langkah yang terlibat dalam bekerja dengan kursor eksplisit.

  • Mendeklarasikan kursor

    Mendeklarasikan kursor berarti membuat satu area konteks bernama untuk pernyataan 'PILIH' yang didefinisikan di bagian deklarasi. Nama area konteks ini sama dengan nama kursor.

  • Membuka Kursor

    Membuka kursor akan memerintahkan PL / SQL untuk mengalokasikan memori untuk kursor ini. Ini akan membuat kursor siap untuk mengambil catatan.

  • Mengambil Data dari Kursor

    Dalam proses ini, pernyataan 'SELECT' dijalankan dan baris yang diambil disimpan dalam memori yang dialokasikan. Ini sekarang disebut sebagai set aktif. Mengambil data dari kursor adalah aktivitas level record yang artinya kita dapat mengakses data dengan cara record-by-record.

    Setiap pernyataan pengambilan akan mengambil satu set aktif dan menyimpan informasi dari catatan tertentu itu. Pernyataan ini sama dengan pernyataan 'SELECT' yang mengambil record dan diberikan ke variabel dalam klausa 'INTO', tetapi tidak akan memberikan pengecualian apa pun.

  • Menutup Kursor

    Setelah semua record diambil sekarang, kita perlu menutup kursor sehingga memori yang dialokasikan ke area konteks ini akan dilepaskan.

Sintaksis:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • Dalam sintaks di atas, bagian deklarasi berisi deklarasi kursor.
  • Kursor dibuat untuk pernyataan 'PILIH' yang diberikan dalam deklarasi kursor.
  • Pada bagian eksekusi, kursor yang dideklarasikan diatur dalam FOR loop dan variabel loop 'I' akan berperilaku sebagai variabel kursor dalam kasus ini.

Contoh 1 : Dalam contoh ini, kami akan memproyeksikan semua nama karyawan dari tabel emp menggunakan loop Cursor-FOR.

DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;BEGINFOR lv_emp_name IN guru99_detLOOPDbms_output.put_line(‘Employee Fetched:‘||lv_emp_name.emp_name);END LOOP;END;/

Keluaran

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Penjelasan Kode:

  • Baris kode 2 : Mendeklarasikan kursor guru99_det untuk pernyataan 'SELECT emp_name FROM emp'.
  • Baris kode 4 : Membangun loop 'FOR' untuk kursor dengan variabel loop lv_emp_name.
  • Baris kode 5: Mencetak nama karyawan di setiap iterasi loop.
  • Baris kode 8: Keluar dari loop

Catatan: Dalam loop Cursor-FOR, atribut kursor tidak dapat digunakan karena pembukaan, pengambilan, dan penutupan kursor dilakukan secara implisit oleh loop FOR.