Pages

Monday, October 25, 2010

Cursor Implisit dan Cursor Eksplisit

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