Resume 4
Dosen : Titik Lusiani,M.kom.,OCA
Definisi Cursor
Dalam blok PL/SQL tidak mengijinkan kita membuat query yang menghasilkan lebih dari satu baris untuk ditampung dalam sebuah variabel. Variabel semacam ini dinamakan cursor.
Kegunaan
Dalam blok PL/SQL tidak mengijinkan kita membuat query yang menghasilkan lebih dari satu baris untuk ditampung dalam sebuah variabel. Variabel semacam ini dinamakan cursor.
Kegunaan
- Untuk menerima hasil query yang jumlah barisnya lebih dari 1 baris
- Memungkinkan untuk melakukan proses yang lebih kompleks untuk setiap record
Macam2 Cursor
Cursor : cursor eksplisit dan cursor implisit
Cursor : cursor eksplisit dan cursor implisit
- Cursor Eksplisit : Cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan
Contoh :
DECLARE
CURSOR c_nama IS
SELECT nama_petugas FROM pegawai ORDER BY nama_petugas ASC;
v_nama PETUGAS.nama_petugas%TYPE; /**%TYPE agar tipe data variabel v_nama sama dengan kolom nama_petugas?*/
BEGIN
FOR X IN c_nama
LOOP
DBMS_OUTPUT.PUT_LINE (c_nama%ROWCOUNT ||'Daftar Nama Petugas : ' || x.nama_petugas);
END LOOP;
END;
- Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulu pada declare section. contoh cursor implisit diasosiasikan dengan perintah SELECT, INSERT, DELETE, dan UPDATE
Contoh :
· DECLARE
· id VARCHAR2(10);
· vnama_petugas PETUGAS.nama_petugas%TYPE;
· BEGIN
· id := 'PG-010'; //assigment VALUE
· SELECT 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;
Ref Cursor
Kita dapat menggunakan ref cursor untuk mengembalikan nilai dalam bentuk recordset/cursor di store procedure.
Ada 2 tipe ref cursor :
Kita dapat menggunakan ref cursor untuk mengembalikan nilai dalam bentuk recordset/cursor di store procedure.
Ada 2 tipe ref cursor :
- Strong ref cursor : tipe data dan panjangnya harus diketahui saat compile
- Weak ref cursor : tipe data dan panjangnya tidak dibutuhkan saat compile
Contoh :
DECLARE
TYPE r_cursor IS REF CURSOR;
c_emp r_cursor;
en emp%rowtype;
BEGIN
OPEN c_emp FOR SELECT * FROM emp;
loop
fetch c_emp INTO en;
exit WHEN c_emp%notfound;
dbms_output.put_line(c_emp%rowcount ||'. '||en.nama);
END loop;
close c_emp;
END;
DECLARE
TYPE r_cursor IS REF CURSOR;
c_emp r_cursor;
en emp%rowtype;
BEGIN
OPEN c_emp FOR SELECT * FROM emp;
loop
fetch c_emp INTO en;
exit WHEN c_emp%notfound;
dbms_output.put_line(c_emp%rowcount ||'. '||en.nama);
END loop;
close c_emp;
END;
Menggunakan ref cursor di dalam loop
Contoh :
Contoh :
DECLARE
TYPE r_cursor IS REF CURSOR;
c_emp r_cursor;
TYPE rec_emp IS record
(
deptno varchar2(20),
nama NUMBER(6)
);
er rec_emp;
BEGIN
FOR i IN (SELECT deptno,lokasi FROM location)
loop
OPEN c_emp FOR SELECT * FROM emp WHERE deptno = i.deptno;
dbms_output.put_line(i.lokasi);
dbms_output.put_line('--------------');
loop
fetch c_emp INTO er;
exit WHEN c_emp%notfound;
dbms_output.put_line(er.name || ' - ' || er.sal);
END loop;
close c_emp;
END loop;
END;
pada variabel ‘i’ tersedia informasi pada tabel location (deptno, lokasi).
Persamaan dan perbedaan antara cursor dan ref cursor :
Persamaan :
Persamaan dan perbedaan antara cursor dan ref cursor :
Persamaan :
- Untuk menerima hasil query yang jumlah barisnya lebih dari 1 baris
- Memungkinkan untuk melakukan proses yang lebih kompleks untuk setiap record
Constanta adalah sebuah declarasi variabel yang bisa diberi nilai hanya sekali saja dan tidak bisa berubah ubah nilai perhitungannya/tetap.
Variabel adalah sebuah pendeclaraian yang bisa diberi nilai dan nilai variabelnya bisa berubah ubah yang sesuai dengan nilai perhitunganya.
Memberi nilai variabel
Cara memberi nilai pada variabel adalah memakai := (titik dua dan sama dengan). Contoh:
v_rcg_min:= &1;
v_rcg_max:= 100;
v_iterasi:=v_rcg_min;
Kita juga bisa memberi nilai ke variabel melalui SQL command. Lihat contoh berikut ini, nilai untuk variabel v_job adalah hasil dari “select job from emp where EMPID=10”
DECLARE
v_job VARCHAR2(9);
BEGIN
select job into v_job from emp where EMPID=10;
dbms_output.put_line(v_job);
END;
/
Trigger adalah sebuah block PL/SQL untuk fungsi tertentu yang berhubungan dengan sebuah event yang spesifikasi dalam sebuah aplikas i/ blok PL/SQL atau prosedur yang berhubungan dengan table, view,
skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event.
skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event.
sequence adalah digunakan untuk mengurutkan data yang unik yang di ciptakan oleh sistem secara otomatis.
0 komentar:
Posting Komentar