Anda di halaman 1dari 12

Membuat Cursor Pada

Oracle 10g

Cursor digunakan dalam script PL/SQL untuk

menampilkan data yang tersimpan di dalam


database. Ada dua macam cursor yaitu implicit
cursor (kursor implisit) dan explicit cursor (kursor
eksplisit). Implicit cursor adalah cursor yang tidak
perlu dideklarasikan pada bagian declaration,
sedangkan explicit cursor harus dideklarasikan di
bagian declaration.

Berikut ini adalah template untuk implicit cursor:


select [daftar kolom]
into [daftar variabel]
from [daftar tabel]
where [syarat]
contoh:
select first_name, last_name, salary
into nama_depan, nama_belakang, gaji
from employees
where first_name = Susan;

Berikut ini adalah contoh script PL/SQL yang menggunakan


implicit cursor:
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;
/

Jika script di atas dieksekusi pada schema HR maka hasilnya


adalah sebagai berikut:

sedangkan ini adalah template untuk explicit cursor:


declare
cursor [nama_cursor_bebas] is

select [daftar_kolom]
from [daftar_tabel]
where [syarat];

begin
open [nama_cursor_bebas];
loop

fetch [nama_cursor_bebas] into [daftar_variabel];


Exit when [nama_cursor_bebas] %notfound;
[aksi_lain]

end loop;
close [nama_cursor_bebas];
end;
/

Explicit cursor harus melalui empat tahap yaitu declare,


open, fetch dan close. Berikut ini adalah penjelasannya:
Pada tahap declare, cursor dideklarasikan pada blok PL/SQL. 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)
Pada tahap open, cursor dibuka (query dalam cursor dieksekusi dan
hasilnya ditampung dalam memory)
Pada tahap fetch, satu baris data dalam cursor diambil dan ditransfer
ke variable penampung yang ada pada klausa into. Karena jumlah baris
data kemungkinan lebih dari satu maka biasanya fetch diletakkan dalam
looping yang akan berhenti begitu semua baris data dalam cursor
selesai di-fetch ke variable penampung
Pada tahap close, cursor ditutup dan hasil query dalam cursor dihapus
dari memory

Berikut ini adalah contoh script PL/SQL yang menggunakan


explicit cursor:

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;
/

dan jika script di atas dieksekusi maka hasilnya

adalah sebagai berikut:

Anda mungkin juga menyukai