Apa itu kursor di oracle
Oracle Menggunakan area kerja yang disebut area Private SQL untuk mengeksekusi Pernyataan SQL dan menyimpan informasi. Kursor Oracle adalah konstruksi PL/SQL yang memungkinkan Anda memberi nama area kerja ini, dan untuk mengakses informasi yang disimpannya
Jenis Kursor di Oracle
- Kursor Tersirat di Oracle
- Kursor Eksplisit di Oracle
Kursor Eksplisit
Kursor eksplisit memiliki tahapan berikut
1) Deklarasikan:Kami mendeklarasikan nama kursor dan mendefinisikan struktur kueri
2) Buka: Pernyataan buka mengeksekusi kueri dan mengikat variabel apa pun yang direferensikan. Baris yang diidentifikasi oleh kueri disebut set aktif. Dan sekarang sudah tersedia untuk diambil
Apa itu Set Aktif: Kumpulan baris yang dikembalikan oleh kueri beberapa baris
Ukurannya adalah jumlah baris yang memenuhi kriteria pencarian Anda
3) Ambil:Pada tahap ini, baris diambil dari kursor, dan setelah setiap pengambilan, Anda menguji kursor untuk baris yang tersisa, jika tidak ada baris, Anda melanjutkan untuk menutup kursor
4) Tutup:Pernyataan tutup melepaskan set baris yang aktif dan kita dapat kembali membuka kursor untuk mengambil set aktif yang disegarkan
Tahapan secara detail
Mendeklarasikan Kursor
- Nama Kursor
- Struktur Kueri
Syntax: CURSOR IS : It includes most of the usual clauses, but INTO Clause is not allowed Example: DECLARE CURSOR cur1 is SELECT address,salary,emp_no,emp_name FROM emp WHERE region=’US’; ……………………………… BEGIN ……………………………… END;
Membuka Kursor
Di sini Parsing dan eksekusi Query selesai. Setelah Membuka Kursor, baris yang dikembalikan oleh kueri tersedia untuk diambil.
Syntax: Open <cursor name> This statement is used within the executable section of the block. It also establishes an active set of the rows Example: OPEN cur1; DECLARE v_salary number; CURSOR cur1 is SELECT salary FROM emp WHERE region=’US’; BEGIN OPEN cur1; LOOP FETCH cur1 into v_salary; EXIT WHEN cur1%NOTFOUND; DBMS_OUTPUT.PUT_LINE (v_salary); END LOOP; CLOSE cur1; END; /
Kursor sekarang akan menunjuk ke baris pertama di set aktif.
Mengambil baris
Setelah kursor dibuka, baris saat ini dimuat ke dalam variabel. Baris saat ini adalah baris di mana kursor saat ini menunjuk Pengambilan data ke dalam variabel PL/SQL atau host
Variabel dilakukan melalui pernyataan FETCH
Syntax: FETCH INTO ;
- Untuk setiap nilai kolom yang dikembalikan oleh kueri yang terkait dengan kursor, harus ada
variabel yang sesuai dalam daftar INTO.
- JUGA Tipe datanya harus kompatibel
MENUTUP KURSOR
Ini secara eksplisit menutup kursor, memungkinkan untuk dibuka kembali, jika diperlukan.
Syntax: CLOSE <cursor-name>; Example: CLOSE cur1 Example of Using CLOSE <Cursor Name> DECLARE v_address emp.address%TYPE; CURSOR cur1 is select address from emp; BEGIN OPEN cur1; LOOP FETCH cur1 into v_address; EXIT WHEN cur1%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_address); END LOOP; CLOSE cur1; END; /
Atribut Kursor Eksplisit
Atribut | Jenis | Deskripsi |
%ISOPEN | Boolean | Mengevaluasi menjadi TRUE jika kursor terbuka |
%TIDAK DITEMUKAN | Boolean | Mengevaluasi ke TRUE jika pengambilan terbaru tidak mengembalikan satu baris |
% DITEMUKAN | Boolean | Mengevaluasi menjadi TRUE jika pengambilan terbaru mengembalikan satu baris |
%ROWCOUNT | NUMBER | Mengevaluasi jumlah total baris yang dikembalikan sejauh ini |
Konsep lanjutan dengan kursor Oracle
Kursor dan Catatan Oracle
1)Kami telah membaca tentang catatan PLSQL.
2) Kita dapat memproses baris dari himpunan aktif dengan mengambil nilai ke dalam PL/SQL Record juga
3) Kami juga dapat mendefinisikan catatan plsql berdasarkan daftar kolom yang dipilih dalam kursor eksplisit juga
Contoh
DECLARE CURSOR dept_cursor is Select deptno,dept_name FROM dept; dept_record dept_cursor%rowtype; BEGIN OPEN dept_cursor; LOOP FETCH dept_cursor INTO dept_record; Insert into dept_temp (deptno, deptname) values (dept_record.deptno, dept_record.dept_name); EXIT WHEN dept_cursor%notfound; END LOOP; Commit; CLOSE dept_cursor; END; /
Cursor dengan Parameter/kursor berparameter di oracle
Syntax: CURSOR cursor_name(parameter_name datatype, ) IS Select_statement;
1)Meneruskan nilai parameter ke kursor saat kursor dibuka dan kueri dijalankan
2) Buka kursor eksplisit beberapa kali dengan set aktif yang berbeda setiap kali
Open cursor_name(parameter_value , ……);
Contoh
DECLARE CURSOR cur1(v_deptno number) is Select deptname,dept_loc,dept_pincode from dept where deptno=v_deptno; Dept_record cur1%rowtype; l_deptno number:=111; BEGIN OPEN cur1(112); LOOP FETCH cur1 into dept_record; IF cur1%FOUND THEN Dbms_output.put_line(dept_record.deptname); ELSE Exit; END IF; END LOOP; CLOSE cur1; OPEN cur1(l_deptno); LOOP FETCH cur1 into dept_record; IF cur1%FOUND THEN Dbms_output.put_line(dept_record.deptname); ELSE Exit; END IF; END LOOP; CLOSE cur1; END; /
Artikel Terkait
Cara bekerja dengan tanggal di Oracle sql
Tabel Oracle PLSQL
Segala sesuatu tentang catatan Oracle PLSQL
Paling sering ditanyakan 25 pertanyaan wawancara oracle plsql
Struktur Blok Oracle PLSQL dan Variabel Oracle PLSQL
Atribut kursor