Cursor

DB2 memiliki mekanisme yang disebut cursor, yang memungkinkan sebuah aplikasi me-retrieve beberapa baris dan kemudian memprosesnya menjadi sebuah baris dalam 1 waktu.

Fungsi Cursor

DB2 menggunakan sebuah cursor untuk membuat beberapa baris, dari result table, yang disediakan untuk program aplikasi. Cursor mengidentifikasi baris terakhir dari resukt table. Ketika menggunakan sebuah cursor, program dapat mengambil setiap baris secara sequential dari result table sampai data terakhir. Statement SELECT digunakan harus dalam statement DECLARE CURSOR. Statement DECLARE CURSOR menentukan dan menamai cursor, mengidentifikasi sekumpulan baris yang diambil(retrieved) dengan statement SELECT dari cursor.

Result table diproses seperti sebuah data set yang berurutan. Cursor harus dibuka(dengan statement OPEN) sebelum baris lainnya di-retrieved. Statement FETCH digunakan untuk me-retrieve baris terakhir cursor. FETCH dapat dijalankan berkali-kali sampai semua baris di-retrieved. Ketika sudah sampai pada data terakhir, cursor harus ditutup dengan statement CLOSE.

Sebuah program dapat memiliki beberapa cursor, dan tiap cursor memiliki :

  • Statement DECLARE CURSOR untuk menentukan cursor
  • Statement OPEN dan CLOSE untuk membuka dan menutup cursor
  • Statement FETCH untuk mengambil baris dari result table cursor

Berikut ini syntax untuk menggunakan fungsi cursor

Untuk statement DECLARE CURSOR

DECLARE cursor-name CURSOR FOR
SELECT column1, column2, ..
FROM table-name
WHERE condition
FOR UPDATE OF column, …
FOR FETCH ONLY

Untuk statement OPEN

OPEN cursor-name

Untuk statement FETCH

FETCH cursor-name
INTO :host-variable1, :host-variable2

Untuk statement CLOSE

CLOSE cursor-name

Untuk statement UPDATE

UPDATE table-name
SET column-A = value, column-B = value, …
WHERE CURRENT OF cursor-nam

Untuk statement DELETE

DELETE FROM table-name
WHERE CURRENT OF cursor-nam

CONTOH PENGGUNAAN CURSOR

DECLARE CURS-A CURSOR FOR
SELECT EMPNO, LASTNAME, WORKDEPT
FROM EMPLTABLE
WHERE WORKDEPT = ‘D11’

OPEN CURS-A

FETCH CURS-A
INTO :EMP-NUM, :NAME2, : DEPT

perform the following until end-of data(menampilkan data sampat akhir)
print a report line(mecetaknya)

FETCH CURS-A
INTO :EMP-NUM, :NAME2, : DEPT

CLOSE CURS-A

Tinggalkan komentar