[SQL] CURSOR

by 06.36 0 komentar
1.      Jelaskan apakah itu cursor dan digunakan untuk apa!
Jawab :
Cursor merupakan suatu variabel yang digunakan untuk menampung  hasil query yang terdiri atas lebih dari satu row atau record. Cursor dapat diilustrasikan sebagai penampung sekaligus pointer atas hasil eksekusi query. Pada dasarnya perintah “SELECT” pada PL/SQL merupakan sebuah cursor.
Cursor digunakan untuk menampung data dari hasil query dan digunakan untuk membuat program yang menggunakan perulangan atau looping, dimana jika digunakan pada program kecil, maka program tersebut menjadi praktis dan mudah dipahami.
2.      Buatlah prosedur sederhana yang menggunakan cursor!
Jawab :
      Buatlah satu tabel misalkan dengan nama tabel DVD dengan 3 field (Kode, Nama_DVD dan Jumlah).
CREATE TABLE [DVD] (
[Kode][varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
[Nama_DVD] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
[Jumlah] [int] NULL
CONSTRAINT [PK_DVD] PRIMARY KEY CLUSTERED
(
[Kode]
) ON [PRIMARY]
) ON [PRIMARY]
GO
      Masukkan data ke dalam tabel yang dibuat seperti dibawah ini.
INSERT into DVD (Kode, Nama_DVD, Jumlah) values (001, ‘Batman vs Superman’, 1)
INSERT into DVD (Kode, Nama_DVD, Jumlah) values (002, ‘Civil War’, 1)
INSERT into DVD (Kode, Nama_DVD, Jumlah) values (001, ‘Now You See Me 2’, 1)

      Berikut tahapan-tahapan menggunakan Fetch dan Cursor, antara lain :
a.       Declare
Mendeklarasikan nama cursor dan menggunakan struktur query select.
DECLARE [nama_cursor] CURSOR FOR [Query]
Contoh :
DECLARE DVD-cursor CURSOR FOR
SELECT Kode, Nama_DVD, Jumlah FROM DVD
WHERE Nama_DVD
ORDER BY Kode, Nama_DVD

b.       Open
Setelah melakukan deklarasi, cursor harus dibuka terlebih dahulu.
OPEN DVD_cursor
Contoh :
OPEN DVD_cursor

c.       Fetch
Merupakan perintah untuk mengambil isi cursor yaitu hasil query pada saat cursor dideklarasikan yang selanjutnya ditampung ke dalam variabel.
FETCH [nama_cursor] INTO [variabel1, variabel2, ....]
Contoh :
FETCH NEXT FROM DVD_cursor
INTO @Kode, @Nama_DVD, @Jumlah

d.      Close dan Deallocate
Close adalah perintah untuk menutup cursor, sementara deallocate adalah perintah untuk melepaskan cursor.
CLOSE [nama_cursor]
DEALLOCATE [nama_cursor]
Contoh :
CLOSE DVD_cursor
DEALLOCATE DVD_cursor




3.      Buatlah trigger sederhana untuk memanipulasi data dalam tabel!
Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger ini adalah store procedure yang dijalankan secara otomatis saat user melakukan modifikasi data pada tabel. Berikut sintaks trigger :
CREATE TRIGGER nama_trigger [BEFORE/AFTER]
[INSERT/UPDATE/DELETE]
ON nama_tabel
FOR EACH ROW
BEGIN
//memasukkan beberapa perintah SQL
END;

Contoh :
Menghitung rating berdasarkan panjang nama dengan formula rating=panjang_nama*2

DELIMETER
DROP TRIGGER IF EXIST trigger_insert_master;
CREATE TRIGGER trigger_insert_master
BEFORE INSERT ON table_master
FOR EACH ROW
BEGIN
SET NEW.rating=LENGTH(NEW.nama)*2;

END;

Download > download

Adi Triginarsa

Developer

Mahasiswa Teknologi Informasi, Fakultas Teknik, Universitas Udayana yang simpel dan seorang gamers