PL/SQL PROGRAMMING PL/SQL adalah prosedur berkelanjutan dari Oracle -SQL yang menawarkan satu bentuk bahasa pemrograman. PL/SQL memungkinkan user atau designer untuk membentuk suatu aplikasi database yang kompleks yang menuntut pemakaian kontrol struktur dan elemen prosedural seperti prosedur, fungsi, atau modul. Sasaran utama PL/SQL : 1. Memaksimalkan pengertian dari SQL. 2. Proses query yg maksimal. 3. Optimasi kombinasi dari perintah pada SQL. 4. Membangun aplikasi database yg modular. 5. Pemakaian kode pemrograman. 6. Mengurangi nilai maintenance dan perubahan aplikasi. STRUKTUR PL/SQL Block header DECLARE constant variable cursor user defined exceptions BEGIN PL/SQL statement EXCEPTION exception handling END; DEKLARASI dan CONSTANT Nama_variabel constant tipe_data not null := ekspresi Contoh CURSOR Cursor nama_cursor (list parameter) is select_statement Contoh CURSOR for LOOP Suatu CURSOR for LOOP akan mendeklarasikan indeks dari loopingnya sebagai suatu record yg merepresentasikan tampilan baris dari suatu database. Untuk menunjuk suatu field dari record digunakan notasi dot. VARIABEL CURSOR Seperti sebuah cursor, variabel cursor menitikberatkan pada baris dari hasil query. Tetapi, tidak seperti sebuah cursor, variabel cursor dapat dibuka pada berbagai tipe query secara kompatibel. Variabel cursor tidak mengikat pada query tertentu. Penggunaan variabel cursor akan fleksibilitas dan kemudahan untuk memfokuskan pada penyajian data dari suatu database. ATTRIBUTE Variabel dan cursor pada PL/SQL mempunyai atribut, yang mana properti akan mengijinkan kita untuk merujuk pada suatu tipe data dan struktur tertentu tanpa harus kita definisikan terlebih dahulu. Tanda persen ( % ) digunakan sebagai indikator atribut. %TYPE Atribute %TYPE menyediakan tipe data dari variabel atau kolom database. CONTOH : my_tittle books.tittle%TYPE Pendeklarasian dengan tipe ini memberikan 2 keuntungan, yaitu : 1. Kita tidak perlu mengetahui secaar pasti tipe data dari tittle. 2. Apabila kita merubah tipe data tittle, maka secara otomatis tipe data my_tittle juga akan berubah. %ROWTYPE Atribute %ROWTYPE menyediakan tipe data dari record yang merepresentasikan suatu baris dari tabel. Jika kita akan mendeklarasikan suatu cursor yg menyediakan data tertentu, kita dapat menggunakan tipe data ini untuk mendeklarasikan recordyang menyimpan informasi yang sama. LANGUAGE EXCEPTION HANDLING when exception_name then sequence of statement CONTROL STRUCTURE Struktur kontrol adalah tambahan terpenting PL/SQL pada SQL. Tidak hanya memanipulasi data Oracle, tetapi juga dapat memproses data menggunakan statemen kondisi, statemen iteratif, dan statemen ‘sequential flow of control’ seperti IF-THEN-ELSE, FOR-LOOP, WHILE-LOOP, dll. Control Structure Instruksi yang digunakan adalah IF-THEN-ELSE. Apabila kondisi pada IF terpenuhi, maka statemen setelah THEN akan dieksekusi, tetapi jika kondisinya tidak terpenuhi, maka statemen setelah ELSE yang akan dieksekusi. Iterative Structure Instruksi yang menggunakan LOOP. LOOP akan mengeksekusi sekumpulan statemen secara berulang-ulang. Instruksi yang menggunakan FOR LOOP. FOR-LOOP akan mengeksekusi sekumpulan statemen secara berulang-ulang sebanyak nilai integer yg kita berikan. Instruksi yang menggunakan WHILE-LOOP. Untuk masing-masing iterasi, kondisinya akan dievaluasi terlebih dahulu. Apabila kondisinya benar maka statement-nya akan dijalankan, kemudian kontrol akan kembali ke bagian teratas dari looping. Apabila kondisinya salah atau bernilai null, maka looping akan dilewatkan dan akan menjalankan statemen selanjutnya. Instruksi yang menggunakan EXIT-WHEN. Statement dalam looping akan dijalankan, sampai menemukan statemen EXIT. Setelah EXIT ditemukan, looping akan mengevaluasi kondisi yang ada. Apabila kondisinya benar maka looping akan berhenti dan dilanjutkan dengan statemen berikutnya. Sequential Structure Instruksi yang digunakan adalah GOTO. Ketika instruksi dijalankan, statemen GOTO akan memindahkan kontrol sesuai dengan label yang diberikan. PROCEDURE Adalah sebuah PL/SQL Block yang bisa dipanggil ataua dijalankan seperti PL/SQL statemen. Pada prosedur juga dimungkinkan untuk mengirimkan data. Secara umum format dari prosedur adalah sbb : PROCEDURE nama_prosedur (parameter IN OUT tipe data) IS deklarasi variabel; BEGIN statement; END; Pada prosedur, suatu parameter bisa hanya bersifat IN yaitu nilai parameter yg dikirimkan ke dalam suatu prosedur, selain itu juga bersifat OUT yaitu nilai parameter yg dikirim keluar dari suatu prosedur. Sedangkan jika diinginkan suatu data terswebut dikirim ke dalam dan juga keluar, maka digunakan tipe IN OUT. FUNCTION Adalah suatu PL/SQL Block yg menghasilkan suatu nilai dan biasa digunakan seperti kita menulis suatu ekspreasi. Pada fungsi dimungkin untuk mengirimkan data. Secara umum format dari fungsi adalah sbb : FUNCTION nama_fungsi (parameter IN OUT tipe data) RETURN tipe_data IS deklarasi variabel; BEGIN statement; RETURN (value); END; Parameter yang ada pada suatu fungsi memiliki tipe data yang sma dengan parameter pada suatu prosedur. Sequential Structure Instruksi yang digunakan adalah GOTO. Ketika instruksi dijalankan, statemen GOTO akan memindahkan kontrol sesuai dengan label yang diberikan.