Cursor
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
- Untuk menerima hasil query yang jumlah barisnya lebih dari 1 baris
- Memungkinkan untuk melakukan proses yang lebih kompleks untuk setiap record
Cursor : cursor eksplisit dan cursor implisit
- Cursor Eksplisit : Cursor yang harus dideklarasikan terlebih dahulu sebelum digunakan
- Cursor Implisit : Cursor yang tidak perlu dideklarasikan dulu pada declare section. contoh cursor implisit diasosiasikan dengan perintah SELECT, INSERT, DELETE, dan UPDATE
Contoh :
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 :
Menggunkan ref cursor di dalam loop
Contoh :
Contoh :
pada variabel 'i' tersedia informasi pada tabel location (deptno, lokasi).
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
- Sebuah ref cursor dapat diasosiasikan dengan lebih dari 1 klausa SELECT saat run-time.
- Sebelum klausa SELECT baru, cursor sebelumnya harus ditutup dulu.
Constanta
Konstanta (constant) – nilai ditentukan pada saat deklarasi dibuat sehingga nilainya tetap
pada saat program dieksekusikan.
Variabel
Variabel – dapat menerima nilai baru atau nilainya diubah pada saat program dieksekusikan.
Waktu mendeklarasikan suatu variable atau konstanta, harus ditentukan tipe data yang akan
dipakai. Sehingga pada waktu mendeklarasikan variable atau konstanta, tipe data SQL dapat
dipakai. Di samping tipe data SQL, PL/SQL mendukung sejumlah tipe datanya sendiri sebagai
berikut :
- BOOLEAN – dipakai untuk menyatakan data logika, yaitu TRUE (benar), FALSE (salah), dan NULL (kosong).
- BINARY_INTEGER – digunakan untuk mendeklarasikan bilangan yang tidak mempunyai angka decimal. Tipe data NATURAL dan POSITIVE merupakan subset dari BINARY_-INTEGER.
- %TYPE – tipe data ini jika dipakai menandakan bahwa veriabel yang dideklarasikan sama dengan tipe data dari kolom table tertentu. Ini mempermudah deklarasi variable untuk menghitung tipe data kolom-kolom table yang sudah dibuat.
- %ROWTYPE - tipe data ini menandakan bahwa sekelompok variable tertentu adalah sama dengan tipe data dari row suatu table tertentu.
- Table dan Record – tipe data komposit (composite datatype) untuk pemakaian yang lebih kompleks.
Trigger
Tipe dari trigger adalah :
· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.
Trigger perlu dibuat pada saat :
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global
Trigger tidak perlu dibuat, jika :
· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.
Sintak penulisan dari database trigger, berisi komponen berikut :
1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger
Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :
· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.
Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.
Tipe trigger ada 2 macam, yaitu :
· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.
· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.
Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.
sumber : www.osun.org/contoh+penggunaan+trigger+sql-pdf.html
Sequence
sequence adalah digunakan untuk mengurutkan data yang unik yang di ciptakan oleh sistem secara otomatis.
0 komentar:
Posting Komentar