Apa Itu Cursor?
Pada program PL/SQL, kita tidak bisa menyimpan data hasil query yang lebih dari 1 record di variabel. Untuk menyimpan data yang lebih dari 1 record, maka gunakanlah Cursor. Karena cursor berperan sebagai penampung data dari hasil query.Jenis Cursor
Ada 2 jenis cursor pada oracle PL/SQL, yaitu:1. Implicit Cursor
Implicit Cursor adalah cursor yang di deklarasikan dan dikelola secara otomatis oleh PL/SQL untuk semua operasi SELECT Statement dan DML (Data Manipulation Language). Implicit cursor akan menghasilkan 1 row/record.
Contoh:
SELECT employe_name INTO vName FROM Employee Where ROWNUM = '1';
2. Explicit Cursor
Explicit Cursor adalah cursor yang didefiniskan pada bagian deklarasi (DECLARE) dan biasanya menggunakan mekanisme open, fetching, dan close cursor.
Tahapan Dalam Cursor
Ada beberapa tahapan atau proses dalam membuat cursor di Oracle PL/SQL, yaitu:1. Deklarasi (DECLARE)
Tahapan ini digunakan untuk mendeklarasikan sebuah cursor. Sintaknya adalah:
CURSOR cursor_name IS SELECT ...;
2. Open
Tahapan ini digunakan untuk membuka atau mengaktifkan sebuah cursor. Sintaknya adalah:
OPEN cursor_name;
3. Fetching Data (Mengambil data)
Tahapan ini digunakan untuk mengambil data dari sebuah cursor dan ditampung dalam sebuah variabel yang telah ditentukan. Sintaknya adalah :
FETCH cursor_name INTO variable_list;
4. CLOSE (Menutup cursor).
Tahapan ini digunakan untuk menutup atau me-nonaktifkan sebuah cursor. Sintaknya adalah :
CLOSE cursor_name;
Atribut Pada Cursor
Di bawah ini adalah atribut-atribut yang sering digunakan ketika membuat sebuah cursor di PL/SQL. Biasanya digunakan pada implicit cursor.Atribut | Keterangan |
---|---|
SQL%ROWCOUNT | Digunakan untuk menampilkan jumlah record yang dihasilkan dari SELECT, UPDATE, dan DELETE statement. |
SQL%FOUND | Bernilai TRUE jika cursor menghasilkan record/baris atau record berhasil di update atau di delete |
SQL%NOTFOUND | Kebalikan dari SQL%FOUND, yaitu bernilai TRUE jika cursor tidak menghasilkan record/baris |
SQL%ISOPEN | Bernilai true jika cursor masih aktif (open) |
Contoh Implicit Cursor
Di bawah ini adalah 2 contoh program penggunaan Implicit Cursor pada Oracle PL/SQL:Contoh Program #1 - Select Statement
DECLARE v_emp_name varchar2(100); BEGIN SELECT first_name || ' ' || last_name INTO emp_name FROM employees WHERE employee_id=100; DBMS_OUTPUT.PUT_LINE(v_emp_name); end;
Contoh Program #2 - Upadate Statement
DECLARE v_number_rows number(5); BEGIN UPDATE employee SET salary = salary + 1000; IF SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE('Tidak ada record yang berhasil di update'); ELSIF SQL%FOUND THEN v_number_rows := SQL%ROWCOUNT; DBMS_OUTPUT.PUT_LINE('Ada ' || v_number_rows || ' record yang telah berhasil di update'); END IF; END;
Contoh Explicit Cursor
Di bawah ini adalah contoh program PL/SQL menggunakan Explicit Cursor:
Contoh #1 - LOOP Cursor
DECLARE data_pegawai employees%rowtype; CURSOR c_pegawai IS SELECT * FROM employees; BEGIN IF NOT c_pegawai%ISOPEN THEN OPEN c_pegawai; END IF; LOOP EXIT WHEN c_pegawai%NOTFOUND; FETCH c_pegawai INTO data_pegawai; DBMS_OUTPUT.PUT_LINE(data_pegawai.first_name || ' ' || data_pegawai.last_name); END LOOP; CLOSE c_pegawai; END;
masih salah brow code nya
ReplyDeletecuma typo dikit seharusnya
ReplyDeleteinto v_emp_name
Terimakasih ilmunya.. :)
ReplyDeleteWah bermanfaa sekali
ReplyDelete