Cursors pada pl/sql

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 ;


Postingan terkait:

Belum ada tanggapan untuk "Cursors pada pl/sql"

Post a Comment