Computer Science, University of Brawijaya Putra Pandu Adikara, S.Kom Cursor Basis Data 2
Cursor CURSOR digunakan untuk mengakses setiap row pada suatu table atau dari result set Pada OOP, dapat dimisalkan layaknya foreach (walaupun berbeda), namun konsepnya untuk mengiterasi elemen (row) pada suatu array (table)
Cursor Yang harus diperhatikan dan dibuat dalam cursor antara lain: Declaring Cursor Deklarasi variabel CURSOR Opening Cursor Membuka CURSOR sebelum fetching data dari table Fetching Cursor Mengambil data dari table Closing Cursor Menutup CURSOR Deallocate Mendealokasikan CURSOR yang telah dideklarasikan
Declaring CURSOR Syntax DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR select_statement [FOR {READ ONLY | UPDATE [OF column_name [,...n]]}] Contoh CURSOR FOR SELECT Account_ID FROM Accounts
Opening Cursor Syntax: OPEN { { [GLOBAL] cursor_name } | cursor_variable_name} Contoh:
Fetching Cursor Syntax: FETCH [ [NEXT | PRIOR | FIRST | LAST | ABSOLUTE {n | RELATIVE {n ] FROM ] { { [GLOBAL] cursor_name } ] Contoh: FETCH NEXT FETCH PRIOR
Fetching Status mengembalikan nilai status dari hasil FETCH CURSOR terakhir. Biasanya digunakan dalam WHILE untuk mengiterasi CURSOR 0 sukses -1 gagal atau diluar result set -2 row yang diambil hilang Pengambilan Fetch Status harus sebelum FETCH Contoh WHILE = 0 BEGIN FETCH NEXT END
Closing Cursor Syntax: CLOSE { { [GLOBAL] cursor_name } | cursor_variable_name } Contoh: Catatan: Jika telah menutup kursor, tetapi belum deallocated, maka dapat dibuka kembali bila diperlukan.
Deallocate Cursor Syntax: DEALLOCATE { { [GLOBAL] cursor_name } Contoh:
CONTOH LENGKAP CURSOR
Simple Cursor USE AdventureWorks2008R2; GO DECLARE vend_cursor CURSOR FOR SELECT BusinessEntityID, Name, CreditRating FROM Purchasing.Vendor OPEN vend_cursor FETCH NEXT FROM vend_cursor;
INT CURSOR = CURSOR FOR SELECT Account_ID FROM Accounts FETCH NEXT WHILE = 0 BEGIN FETCH NEXT END