Penggunana cursor pada pl/sql
oracle database
Cursor merupakan wadah
untuk menyimpan variable query yang lebih dari satu, karena query tidak bisa
menampung banyak variable harus sat persatu. Maka di gunakanlah cursor agar
dapat menyimpan banyak query tersebut.
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;
Berikut ini adalah beberapa contoh cursor pada pl/sql oracle
database
DECLARE
empno
employees.employee_id%TYPE;
fname
employees.first_name%TYPE;
lname
employees.last_name%TYPE;
CURSOR emp_cursor IS SELECT
employee_id, first_name,last_name FROM employees;
BEGIN
OPEN emp_cursor;
FETCH emp_cursor INTO
empno, fname, lname;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( TO_CHAR
(empno) ||' '||fname ||' ' || lname);
END LOOP;
CLOSE emp_cursor
END;
Contoh 2 :
Menampilkan 10 data
dari table employees menggunakan cursor
DECLARE
empno
employees.employee_id%TYPE;
fname
employees.first_name%TYPE;
ename
employees.last_name%TYPE;
i
int;
CURSOR
emp_cursor IS
SELECT
employee_id,first_name,
last_name
FROM employees;
BEGIN
i:=0;
nilai
awal utk nomor
OPEN
emp_cursor;
DBMS_OUTPUT.PUT_LINE
('10 Data Employees');
DBMS_OUTPUT.PUT_LINE
('=================');
DBMS_OUTPUT.PUT_LINE
('No Emp_id Name');
DBMS_OUTPUT
.PUT_LINE
('-----------------------');
LOOP
FETCH
emp_cursor INTO empno, fname,ename;
EXIT
WHEN emp_cursor%NOTFOUND OR emp_cursor%ROWCOUNT > 10 ;
i:=i+1;
--menambah nomor
DBMS_OUTPUT.PUT_LINE(I
||' ' || TO_CHAR(empno)
||'
'|| fname ||' '|| ename);
END
LOOP;
CLOSE
emp_cursor;
END ;
Belum ada tanggapan untuk "Cursors pada pl/sql"
Post a Comment