Cursor
Blok PL/SQL tidak
mengizinkan kita untuk menampilkan beberapa baris dengan menggunakan
perintah SELECT secara langsung. Untuk mengatasi kendala ini, maka
digunakanlah Cursor. Cursor merupakan sejenis variabel yang dapat
digunakan untuk menampung banyak nilai berupa baris atau record.
Nilai-nilai yang disimpan di dalam sebuah Cursor selanjutnya dapat
dimanipulasi sehingga dapat digunakan sesuai kebutuhan. Atau dapat
dikatakan bahwa Cursor merupakan pointer yang menunjuk ke suatu bagian
memori untuk menyimpan hasil instruksi SQL. Hasil instruksi SQL
tersebut biasanya merupakan multiple row, dan Cursor digunakan untuk
menunjuk (pointer) ke salah satu baris data.
Dalam pemakaiannya, sebuah Cursor akan melalui beberapa tahap yakni :
1. Deklarasi (Declare)
2. Buka (Open)
3. Ambil Data (Fetch)
4. Tutup (Close).
Ada pula yang menyebutkan lima tahap, yakni :
1. Deklarasi (Declare)
2. Buka (Open)
3. Baca Berulang (Loop / Fetch)
4. Tutup (Close)
5. Dealokasi Memori (Deallocate)
Cusrsor sendiri dibedakan menjadi :
1. Cursor Eksplisit, merupakan Cursor yang harus dibuka dan ditutup secara manual.
2. Cursor Implisit, merupakan Cursor yang tidak perlu untuk dideklarasikan sebelumnya.
Contoh Sederhana Cursor Pada Oracle :
DECLARE
03 | SELECT KODE_BARANG, NAMA_BARANG, STOK_BARANG |
05 | VREC CUR_BARANG%ROWTYPE; |
09 | FETCH CUR_BARANG INTO VREC; |
10 | EXIT WHEN CUR_BARANG%NOTFOUND; |
11 | Dbms_Output.PUT_LINE(VREC.KODE_BARANG || ' ' || VREC.NAMA_BARANG || ' ' || VREC.STOK_BARANG); |
Contoh Sederhana Cursor Pada SQL Server :
CREATE
PROCEDURE
DAFTAR_PELANGGAN
04 | DECLARE @CUSTNAME VARCHAR (30) |
05 | DECLARE @DISCOUNT DECIMAL (4,2) |
06 | DECLARE CUSTCURSOR CURSOR |
08 | SELECT CUSTID,CUSTNAME,DISCOUNT |
15 | FROM CUSTCURSOR INTO @CUSTID,@CUSTNAME,@DISCOUNT |
17 | IF (@@FETCH_STATUS <> 0) BREAK |
18 | PRINT CAST (@CUSTID AS VARCHAR (5)) + " " + @CUSTNAME + CAST (@DISCOUNT AS VARCHAR (5)) |
0 komentar:
Posting Komentar