PLSQL CURSOR Program Studi D 3 Teknik Informatika

  • Slides: 22
Download presentation
PL/SQL CURSOR Program Studi D 3 Teknik Informatika -Fakultas Ilmu Terapan

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

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

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

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';

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

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)

TAHAP PENGGUNAAN CURSOR • • Deklarasi (DECLARE) Buka (OPEN) Pengambilan (FETCH) Tutup (CLOSE)

Cursor Eksplisit

Cursor Eksplisit

CURSOR EKSPLISIT DECLARE CURSOR nama_cursor IS statemen SELECT; -- Membuka cursor OPEN nama_cursor ;

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,

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;

MEMBUKA CURSOR • OPEN nama_cursor; • OPEN C_Mahasiswa;

MENANGKAP ISI CURSOR • FETCH nama_cursor INTO nama_variabel; • FETCH C_Mahasiswa INTO Var 1,

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;

MENUTUP CURSOR • CLOSE nama_cursor; • CLOSE C_Mahasiswa;

CONTOH CURSOR DECLARE CURSOR C_Mahasiswa IS SELECT nim, nama FROM TMahasiswa; Var 1 TMahasiswa.

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;

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.

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

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

SELESAI