Anda di halaman 1dari 3

Nama : Ni Putu Adnya Puspita Dewi

Kelas : Teknologi Basis Data D


NIM : 2105551099

Tugas Cursor

1. Pengertian Cursor
Cursor merupakan suatu variabel yang tercipta dikarenakan blok PL/SQL tidak dapat
menampilkan lebih dari satu baris secara langsung dengan menggunakan perintah SELECT.
Dalam database cursor diibaratkan sebagai tabel virtual. Cursor memiliki fungsi yang berbeda
dari variabel skalar, dimana cursor dapat menampung banyak nilai baris maupun record. Saat
setelah cursor menampung nilai, nilai dalam kursor tersebut dapat dimanipulasi dan
digunakan sesuai dengan kebutuhan.

2. Jenis jenis cursor


1. Implicit Cursor
Implicit cursor adalah cursor PL/SQL yang dideklarasikan dan dikelola secara
otomatis untuk pelaksanaan operasi DML SQL dan perintah SELECT Contoh deklarasi
Implicit cursor
DECLARE
vtotal NUMBER;
BEGIN SELECT kapasitas INTO vjumlah
FROM kelas WHERE tbkelas='&kelas';
DBMS_OUTPUT. PUT_LINE(vjumlah);
END;
2. Explicit Cursor
Berbeda dengan implicit cursor, explicit cursor adalah cursor yang dikelola serta
dideklarasikan oleh Programmer. Cursor ini merupakan variabel yang dapat digunakan untuk
menampung banyak nilai berupa baris atau record
Deklarasi explicit cursor
DECLARE CURSOR nama_cursor IS
statement SELECT;
//Membuka cursor
OPEN nama_cursor ;
//Menangkap isi cursor
FETCH nama_cursor INTO nama_variabel;
//Menutup cursor
CLOSE nama_cursor;

3. Isi dari cursor


Deklarasi (DECLARE)
Buka (OPEN)
Pengambilan (FETCH)
Tutup (CLOSE)
4. DEKLARASI CURSOR
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;

5. Contoh Cursor
Membuat cursor untuk input total jumlah item yang dibeli masing masing pelanggan.
1. Sebelum membuat cursor, diperlukan prosedur untuk menghitung total
DELIMITER$$
CREATE PROCEDURE total_beli(IN id_pel VARCHAR(5) , OUT sm INT)
BEGIN
SET sm:= (SELECT SUM(total_item) FROM tb_penjualan WHERE id_pelanggan = id_pel);
END $$
DELIMITER;

2. Setelah itu buat tb_laporan_pelanggan


CREATE TABLE tb_laporan_pelanggan(
id_laporan CHAR (5),
nama_pelanggan VARCHAR (20),
total_item TINYINT(5)
);

3. Cursor
DELIMITER $$
CREATE PROCEDURE laporanpelanggan()
BEGIN
DECLARE id_pel CHAR (5);
DECLARE nama_pel VARCHAR (20);
DECLARE selesai INT DEFAULT 0;
DECLARE cursorTotalBeliPel
CURSOR FOR SELECT id_pelanggan, nama_pelanggan FROM tb_konsumen ORDER BY
id_pelanggan;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET selesai = 1;
TRUNCATE tb_laporan_pelanggan;
OPEN cursorTotalBeliPel;
WHILE NOT selesai DO
FETCH cursorTotalBeliPel INTO id_pel, nama_pel;
CALL total_beli(id_pel, @sm);
IF @sm IS NULL THEN
SET @sm = 0;
END IF;
IF NOT selesai THEN
INSERT INTO tb_laporan_pelanggan VALUES (id_pel, nama_pel, @sm);
END IF;
END WHILE;
CLOSE cursorTotalBeliPel;
END$$
DELIMITER;

4. Menampilkan hasil inputan, setelah dibuatnya cursor


CALL laporanpelanggan();
SELECT*FROM tb_laporan_pelanggan;

Anda mungkin juga menyukai