Cursor adalah suatu variable dalam blok PL/SQL yang tidak mengijinkan seorang programer membuat query yang menghasilkan lebih dari satu baris untuk ditampung di dalam nya. Cursor ada 2 macam yaitu :
a. Cursor Eksplisit : Cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan, sedangkan
b. Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulu pada declare section. contoh cursor implisit diasosiasikan dengan perintah SELECT, INSERT, DELETE, dan UPDATE.
Bentuk Umum Sintaksnya :
DOFC (DECLARE, OPEN, FETCH, CLOSE)
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;
/
Contoh dengan menggunakan Cursor Eksplisit:
1. Memunculkan Nama Depan, Email, No.Telepon dari sebuah karyawan yang berada di tabel HR
declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
email employees.email%type;
nomor_telepon employees.phone_number%type;
cursor jojo is
select first_name, email, phone_number
from employees
where first_name=nama_cari;
begin
nama_cari:='&masukkan_nama';
open jojo;
loop
fetch jojo into nama_depan,email,nomor_telepon;
exit when jojo%notfound;
dbms_output.put_line('Nama : '||nama_depan);
dbms_output.put_line('Email : '||email||'');
dbms_output.put_line('Nomor Telepon : '||nomor_telepon);
end loop;
close jojo;
end;
2. Contoh dengan menggunakan Cursor Implisit :
Memunculkan Nama Depan, Pekerjaan, Gaji dari sebuah karyawan yang berada di tabel HR
eclare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
pekerjaan jobs.job_title%type;
gaji employees.salary%type;
begin
nama_cari:='&masukkan_nama';
select first_name, job_title,salary
into nama_depan,pekerjaan,gaji
from employees e join jobs j
on(e.job_id=j.job_id)
where first_name=nama_cari;
dbms_output.put_line('Nama '||nama_depan|| ' Mempunyai Pekerjaan ' ||pekerjaan||' Dengan Gaji USD '||gaji);
end;
/
No comments:
Post a Comment