Upload
muhammad-fauzi
View
356
Download
1
Embed Size (px)
Citation preview
5/12/2018 Cursor Pada PL - slidepdf.com
http://slidepdf.com/reader/full/cursor-pada-pl 1/4
Andre Dwi / 10509020MI-01
Cursor pada PL/SQL
Cursor adalah suatu variable dalam blok PL/SQL yang tidak mengijinkanseorang programer membuat query yang menghasilkan lebih dari satubaris untuk ditampung di dalam nya. Cursor ada 2 macam yaitu :
a. Cursor Eksplisit : Cursor yang harus dideklarasikan terlebihdahulu sebelum digunakan, sedangkanb. Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulupada declare section. contoh cursor implisit diasosiasikan denganperintah SELECT, INSERT, DELETE, dan UPDATE.
Contoh Program :
A. Cursor Eksplisit
DECLARE
CURSOR c_nama IS
SELECT nama_petugas FROM pegawai ORDER BY nama_petugas ASC;
v_nama PETUGAS.nama_petugas%TYPE;
BEGIN
FOR X IN c_nama
LOOP
DBMS_OUTPUT.PUT_LINE (c_nama%ROWCOUNT ||'Daftar Nama Petugas
: ' || x.nama_petugas);END LOOP;
END;
B. Cursor Implisit
DECLARE
id VARCHAR2(10);
vnama_petugas PETUGAS.nama_petugas%TYPE;
BEGIN
id := 'PG-010'; //assigment valueSELECT nama_petugas INTO vnama_petugas FROM PETUGAS WHERE
id_petugas = id;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Data ditemukan');
ELSE
DBMS_OUTPUT.PUT_LINE ('Nama petugas dengan id : ' || id || 'adalah ' ||
vnama_petugas);
END IF;
END;
5/12/2018 Cursor Pada PL - slidepdf.com
http://slidepdf.com/reader/full/cursor-pada-pl 2/4
Andre Dwi / 10509020MI-01
Cursor digunakan dalam script PL/SQL untuk menampilkan data yangtersimpan 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, salaryinto nama_depan, nama_belakang, gajifrom employeeswhere first_name = ‘Susan’;
Berikut ini adalah contoh script PL/SQL yang menggunakan implicit cursor:
declarenama_cari employees.first_name%type;nama_depan employees.first_name%type;alamat_email employees.email%type;telepon employees.phone_number%type;beginnama_cari := '&masukkan_nama';select first_name, email, phone_numberinto nama_depan, alamat_email, teleponfrom 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 adalahsebagai berikut:
sedangkan ini adalah template untuk explicit cursor:
declarecursor [nama_cursor_bebas] is
select [daftar_kolom]
5/12/2018 Cursor Pada PL - slidepdf.com
http://slidepdf.com/reader/full/cursor-pada-pl 3/4
Andre Dwi / 10509020MI-01
from [daftar_tabel]where [syarat];
beginopen [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 danclose. Berikut ini adalah penjelasannya:
1. 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 untukcursor diletakkan setelah deklarasi variable lain, tepat sebelum awalprogram (begin)
2. Pada tahap open, cursor dibuka (query dalam cursor dieksekusi danhasilnya ditampung dalam memory )
3. Pada tahap fetch, satu baris data dalam cursor diambil danditransfer ke variable penampung yang ada pada klausa into.Karena jumlah baris data kemungkinan lebih dari satu makabiasanya fetch diletakkan dalam looping yang akan berhenti begitusemua baris data dalam cursor selesai di-fetch ke variablepenampung
4. Pada tahap close, cursor ditutup dan hasil query dalam cursor dihapus dari memory
Berikut ini adalah contoh script PL/SQL yang menggunakan explicit cursor :
declarenama_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_numberfrom employeeswhere first_name = nama_cari;
beginnama_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;
5/12/2018 Cursor Pada PL - slidepdf.com
http://slidepdf.com/reader/full/cursor-pada-pl 4/4
Andre Dwi / 10509020MI-01
end;/
dan jika script di atas dieksekusi maka hasilnya adalah sebagai berikut:
Semua contoh di atas dapat digunakan pada sample database (schemaHR) yang terdapat pada Oracle 10g dan Oracle 10g XE.