Sebuah query mengembalikan sekumpulan baris yang biasa disebut sebagai resultset. Cursor merupakan sebuah pointer yang dipakai untuk menunjuk posisi tertentu (baris) dalam sebuah resultset. Jadi kita bisa menggunakan Cursor untuk berjalan-jalan dalam resultset, mengambil datanya, dan kemudian memprosesnya
Alur Cursor
1. Declare Cursor
Deklarasi Cursor (DECLARE) Pendeklarasian
CURSOR menspesifikasikan nama CURSOR dan perintah SELECT yang dipakai dalam
CURSOR tersebut. Declare <nama cusrsor> cursor for<perintah
select>;
2. Open
Dengan membuka CURSOR, kita menjalankan <perintahSELECT>
dalam CURSOR dan menempatkan CURSOR pada posisi pertama dari hasil Open<nama
cursor>;
3. Fetch
Mengambil baris dalam
Cursor (FETCH) Setiap proses ini, mengambil baris selanjutnya dalam hasil
SELECT Fetch next from <nama cursor> into <target list>
4. While
<Target list> merupakan
variable yang dipakai untuk menyimpan masing-masing kolom dalam SELECT. Untuk
melakukan perjalanan, kita harus menggunakan perulangan. Dalam WHILE inilah
dilakukan pengecekan apakah Cursor empty atau tidak.
While @@fetch_status=0
Begin
.....
END;
5. Close
Menutup
CURSOR dan menghapus pemakaian sumber daya sistem.
Close <nama cursor>
Dellocate <nama
cursor>
Contoh Cursor
DECLARE @kdbrg_masuk
char(10)
DECLARE @qty_masuk char(10)
DECLARE @qty_masuk char(10)
DECLARE TC CURSOR
For
SELECT kd_brg,qty from barang_masuk
OPEN
TC
FETCH
FROM TC INTO @kdbrg_masuk,@qty_masuk
WHILE
@@FETCH_STATUS = 0
BEGIN
UPDATE STOK_BARANG SET qty_in = @qty_masuk,
qty_akhir = qty_akhir + @qty_masuk
WHERE kd_brg = @kdbrg_masuk
FETCH NEXT FROM TC INTO
@kdbrg_masuk,@qty_masuk
END
CLOSE TC
DEALLOCATE
TC
.
Tidak ada komentar:
Posting Komentar