PLSQL CURSOR Program Studi D 3 Teknik Informatika






















- Slides: 22
PL/SQL CURSOR Program Studi D 3 Teknik Informatika -Fakultas Ilmu Terapan
REFERENSI • Abraham Silberscahatz, Henry F. Korth. Database System Concepts. Mc. Graw-Hill • Raghu Ramakrisnan, Gherke. Database Management System. Mc. Graw-Hill • Greenberg, N. (Edition 1. 1 August 2004). Oracle Database 10 g: SQL Fundamental I. Jobi Varghese – BAB 6
CURSOR • Pada block PL/SQL kita tidak bisa menampilkan beberapa baris dengan menggunakan perintah SELECT secara langsung. Untuk mengatasi hal tersebut, maka kita dapat menggunakan sebuah kursor. • Berbeda dengan variabel skalar, cursor dapat menampung banyak nilai berupa baris atau record. Nilainilai yang disimpan dalam sebuah kursor kemudian dapat dimanipulasi sehingga dapat digunakan sesuai kebutuhan. • Cursor dapat diibaratkan sebagai tabel virtual.
Cursor sendiri terdiri dari 2 tipe : • Implicit Cursor – Merupakan Cursor yang dideklarasikan dikelola secara otomatis oleh PL/SQL untuk semua operasi DML SQL dan PL/SQL SELECT Statement – Perintah SELECT akan diikuti dengan INTO – Dideklarasikan setelah klausa Begin pada Blok PL/SQL • Explicit Cursor – Merupakan Cursor yang dikelola dan dideklarasikan oleh Programmer – Dapat dideklarasikan sebelum klausa Begin pada Blok PL/SQL maupun setelahnya
Implicit Cursor DECLARE vjumlah NUMBER; BEGIN SELECT kapasitas INTO vjumlah FROM kelas WHERE kdkelas='&kelas'; DBMS_OUTPUT. PUT_LINE(vjumlah); END; /
Explicit Cursor • Sejenis variabel yang dapat digunakan untuk menampung banyak nilai berupa baris atau record • Pointer yang menunjuk ke suatu bagian memori untuk menyimpan hasil instruksi SQL
TAHAP PENGGUNAAN CURSOR • • Deklarasi (DECLARE) Buka (OPEN) Pengambilan (FETCH) Tutup (CLOSE)
Cursor Eksplisit
CURSOR EKSPLISIT DECLARE CURSOR nama_cursor IS statemen SELECT; -- Membuka cursor OPEN nama_cursor ; -- Menangkap isi cursor FETCH nama_cursor INTO nama_variabel; -- Menutup cursor CLOSE nama_cursor;
DEKLARASI CURSOR DECLARE CURSOR nama_cursor IS Statemen SELECT; DECLARE CURSOR C_Mahasiswa IS SELECT nim, nama FROM TMahasiswa;
MEMBUKA CURSOR • OPEN nama_cursor; • OPEN C_Mahasiswa;
MENANGKAP ISI CURSOR • FETCH nama_cursor INTO nama_variabel; • FETCH C_Mahasiswa INTO Var 1, Var 2; • FETCH C_Mahasiswa INTO Var 3;
MENUTUP CURSOR • CLOSE nama_cursor; • CLOSE C_Mahasiswa;
CONTOH CURSOR DECLARE CURSOR C_Mahasiswa IS SELECT nim, nama FROM TMahasiswa; Var 1 TMahasiswa. NIM%TYPE; Var 2 TMahasiswa. NAMA%TYPE; BEGIN OPEN C_Mahasiswa; LOOP FETCH C_Mahasiswa INTO Var 1, Var 2; EXIT WHEN C_Mahasiswa%NOTFOUND; HTP. P(C_Mahasiswa%ROWCOUNT|| ‘. ‘ ||Var 1|| ‘ ‘||Var 2); END LOOP; CLOSE C_Mahasiswa; END; /
CONTOH CURSOR DECLARE CURSOR C_Mahasiswa IS SELECT nim, nama FROM TMahasiswa; Var 3 C_Mahasiswa%ROWTYPE; BEGIN OPEN C_Mahasiswa; LOOP FETCH C_Mahasiswa INTO Var 3; EXIT WHEN C_Mahasiswa%NOTFOUND; DBMS_OUTPUT. PUT_LINE(C_Mahasiswa%ROWCOUNT|| ‘. ‘ ||Var 3. NIM|| ‘ ‘||Var 3. NAMA); END LOOP; CLOSE C_Mahasiswa; END;
CONTOH CURSOR DECLARE CURSOR C_Mahasiswa IS SELECT nim, nama FROM TMahasiswa; Var 1 TMahasiswa. NIM%TYPE; Var 2 TMahasiswa. NAMA%TYPE; BEGIN FOR i IN C_Mahasiswa LOOP Var 1 : = i. NIM; Var 2 : = i. NAMA; DBMS_OUTPUT. PUT_LINE(Var 1|| ‘ ‘||Var 2); END LOOP; END; /
Latihan • Dengan menggunakan table Employees pada skema HR, buat blok PL/SQL untuk menghitung jumlah pegawai yang memiliki salary lebih kecil dari salary Steven King! • Buatlah blok PL/SQL dengan menggunakan kursor eksplisit untuk menghasilkan output: Employee_id Name Salary 100 Steven King 24000 …
SELESAI