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