Cursor digunakan untuk menampung hasil query lebih dari satu baris data pada PL/SQL. Terdapat dua jenis cursor, yaitu implisit yang digunakan untuk satu baris data dan eksplisit yang memerlukan deklarasi, pembukaan, pengambilan data secara berulang, dan penutupan untuk memproses lebih dari satu baris data.
1. RESUME CURSOR
PENGERTIAN 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 suatu variabel yang digunakan untuk menampung hasil query yang terdiri
atas lebih dari satu row (record). Cursor dapat diilustrasikan sebagai penampung sekaligus
pointer atas hasil eksekusi query. Pada dasarnya perintah “SELECT ..” pada PL/SQL merupakan
sebuah cursor.
CURSOR TERBAGI MENJADI 2 MACAM YAITU:
Cursor Implisit
Merupakan cursor yang tidak perlu dideklarasikan pada bagian declaration dan
digunakan secara default (disediakan oleh database).
Cursor implisit biasa digunakan bila hanya ingin mengambil satu query dari suatu baris
tertentu untuk ditampilkan. Maka oleh itu, jika hasil cursor implisit ini lebih dari satu
baris atau tidak menghasilkan satu baris pun, maka akan mengeluarkan pesan kesalahan.
Contoh script pada Cursor Implisit
declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
alamat_email employees.email%type;
telepon employees.phone_number%type;
begin
nama_cari := '&masukkan_nama';
select first_name, email, phone_number
into nama_depan, alamat_email, telepon
from employees
where first_name = nama_cari;
dbms_output.put_line('Nama: '||nama_depan);
dbms_output.put_line('Email:'||alamat_email||'@SemogaJaya.co.id');
dbms_output.put_line('Telepon: '||telepon);
end;
/
2. Hasil yang ditampilkan
Cursor Eksplisit
Merupakan cursor yang harus dideklarasikan di bagian declaration dan biasa digunakan
bila ingin mengambil lebih dari satu query dari suatu baris tertentu yang biasanya
memiliki proses looping didalamnya untuk ditampilkan.
TERDAPAT 4 TAHAP DALAM MEMBUAT EKSPLISIT CURSOR
1. Declare
Merupakan deklarasi cursor pada blok PL/SQL yang akan digunakan. Cursor perlu
dideklarasikan karena sifat cursor yang menyerupai variable (dapat dipanggil dalam blok
utama program) namun deklarasi untuk cursor diletakkan setelah deklarasi variable lain,
tepat sebelum awal program (begin).
2. Open
Sebelum suatu cursor dapat digunakan, cursor harus dibuka terlebih dahulu
(query dalam cursor dieksekusi dan hasilnya ditampung dalam memory).
3. Fetch
Merupakan perintah untuk mengambil data dari cursor dan ditransfer ke variable
penampung yang ada pada klausa into. Kemungkinan jumlah baris data lebih dari satu
maka biasanya fetch diletakkan dalam looping yang akan berhenti begitu semua baris
data dalam cursor selesai di-fetch ke variable penampung. Fetch dilakukan untuk tiap
baris.
4. Close
Setelah pemrosesan query selesai, cursor ditutup dan hasil query dalam cursor dihapus
dari memory.
3. Contoh script pada Cursor Ekspilisit
Hasil yang ditampilkan
Hasil yang ditampilkan
declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
alamat_email employees.email%type;
telepon employees.phone_number%type;
cursor anu is
select first_name, email, phone_number
from employees
where first_name = nama_cari;
begin
nama_cari := '&masukkan_nama';
open anu;
loop
fetch anu into nama_depan, alamat_email, telepon;
exit when anu%notfound;
dbms_output.put_line('Nama: '||nama_depan);
dbms_output.put_line('Email:
'||alamat_email||'@SemogaJaya.co.id');
dbms_output.put_line('Telepon: '||telepon);
dbms_output.put_line(‘--------------------------------------------
---------------’);
end loop;
close anu;
end;
/