BACK END
PROGRAMMING
Mengenal PL/SQL
PL/SQL (Procedural Language/Structured Query
Language) merupakan Bahasa pemrograman terstruktur di dalam SQL yang tersusun dalam blok-blok
logical, yang dapat menjalankan perintah-perintah untuk menyelesaikan masalah (di Oracle
disebut PL/SQL).
Secara singkat, PL/SQL menambahkan teknik
pemrograman terstruktur ke dalam SQL. PL/SQL digunakan dalam back end
programming, yang dibangun oleh SQL dan Bahasa prosedural. Jenis-jenis PL/SQL di
antaranya adalah anonymous block, stored program units (procedure, function,
package), dan trigger.
Kelebihan PL/SQL
adalah :
1. Performa lebih baik dan network traffic lebih rendah karena dijalankan di
database server
2. Integritas ketat, perintah-perintah SQL (memanipulasi data, transaksi,
dll) dijalankan
secara aman dan fleksibel
3. Produktivitas lebih tinggi, karena PL/SQL dapat menjalankan perintah
query di dalam blok procedural
4. Mendukung pemrograman berorientasi objek (OOP) dan mendukung pengembangan aplikasi
web dan server pages.
5. Keamanan ketat
6.
Dapat digunakan banyak
aplikasi (termasuk aplikasi eksternal)
Sifat-sifat PL/SQL (secara kode program)
1. Mirip bahasa pemrograman Pascal
2. Case insensitive (besar kecil karakter tidak mempengaruhi)
3. Strong typed, semua variabel harus dideklarasikan
Struktur Umum PL/SQL
§ Bagian deklarasi
Dimulai dengan perintah
DECLARE, berfungsi untuk mendeklarasikan variabelvariabel yang diperlukan di
dalam PL/SQL. Jika tidak memerlukan variabel, maka bagian deklarasi ini
dapat dihilangkan.
§ Bagian eksekusi
Bagian yang memuat
sintaks PL/SQL. Dimulai dengan perintah BEGIN. Sintaks dapat berupa pemilihan
(IF-THEN), perulangan (FOR, LOOP, WHILE), mengambil nilai select, cursor, dan
sebagainya.
§ Bagian eksepsi
Bagian yang memuat cara
menangani kesalahan-kesalahan atau error handling pada waktu eksekusi PL/SQL. Bagian
eksepsi juga dapat dihilangkan jika tidak diperlukan penanganan kesalahan dalam
PL/SQL
1. Anonymous Block
Merupakan blok PL/SQL tak bernama dan tak disimpan pada database,
tetapi pada Oracle Pre compiler. Anonymous block ini dijalankan dari dalam
aplikasi, pada runtime aplikasi akan mengirimkan anonymous bock PL/SQL pada
database oracle, di mana anonymous block tersebut di dicompile dan dieksekusi. Contoh :
DECLARE
v_counter
NUMBER(3);
BEGIN
v_counter
:= 0;
LOOP
INSERT
INTO deret1(nilai) VALUES (v_counter);
v_counter
:= v_counter + 1;
IF(v_counter
> 10) THEN
EXIT;
END
IF;
END
LOOP;
END;
2. Stored Procedure
Stored procedure merupakan salah satu jenis
PL/SQL yang memiliki kemampuan menerima parameter input, melakukan pengolahan
terhadap parameter input tersebut dan
menampilkannya. Stored procedure dapat memeiliki parameter input atau tidak memiliki parameter. Parameternya dapat
berupa input, output, dan gabungan input
output. Seperti halnya blok non-modular PL/SQL, stored procedure mampu
menangani pesan kesalahan yaitu
dengan Exception Handling. Stored procedure dapat digunakan secara stand-alone, digunakan bersama stored procedures lainnya,
atau dapat digunakan bersama stored
function. Contoh :
create or replace procedure
prc_contoh_1(v_batas IN NUMBER) AS
v_counter
NUMBER;
begin
v_counter
:= 0;
loop
insert
into deret1(nilai) values(v_counter);
v_counter
:= v_counter+1;
if
v_counter > v_batas then
exit;
end
if;
end
loop;
end prc_contoh_1;
/
3. Function
Function atau lebih sering disebut Stored
Function merupakan salah satu modul dari PL / SQL yang dapat mempermudah
melakukan pengolahan suatu nilai dan mengembalikan nilai tertentu. Jika kalian
sudah mempelajari Algoritma Pemograman maka Function ini tidak jauh berbeda
dengan Fungsi yang ada di Algoritma Pemograman, yang berbeda hanya struktural
syntax-nya saja. Contoh :
create or replace function l_function return number
as
nilai_maksimum
integer;
begin
select
max(nilai) into nilai_maksimum from latihan_function;
return
(nilai_maksimum);
end l_function;
/
4. Cursor
Cursor berfungsi untuk menangkap / mengambil
banyak data yang banyaknya telah ditentukan sesuai kebutuhan. Cursor digunakan
dalam script PL/SQL untuk menampilkan data yang tersimpan di dalam database.
Cursor biasanya digunakan dalam sebuah fungsi atau sebuah prosedur. Contoh :
create or replace procedure prc_latcursor as
v_nilai
latihan_cursor2.nilai%type;
v_komentar
latihan_cursor2.komentar%type;
cursor
c_nilai is select nilai from latihan_cursor2;
begin
open
c_nilai;
loop
fetch
c_nilai into v_nilai;
exit
when c_nilai%notfound;
if
v_nilai > 85 then
v_komentar
:= 'A';
elsif
v_nilai < 85 and v_nilai > 75 then
v_komentar
:= 'B';
elsif
v_nilai < 75 and v_nilai > 65 then
v_komentar
:= 'C';
elsif
v_nilai < 65 and v_nilai > 55 then
v_komentar
:= 'D';
else
v_komentar
:= 'E';
end
if;
update
latihan_cursor2 set komentar = v_komentar where nilai = v_nilai;
end
loop;
close
c_nilai;
end prc_latcursor;
/
5.
Trigger
Trigger merupakan suatu block PL/SQL yang
akan tersimpan didalam database. Trigger akan teraktivasi secara otomatis ketika terjadi suatu kejadian/event
(INSERT, DELETE, UPDATE) terhadap
table, view dan database. Biasanya Trigger digunakan untuk mengisi ataupun
mengubah nilai kolom dalam suatu
tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Contoh trigger
:
create or replace trigger pinjaman
after
insert
or delete or update on peminjaman
for each row
begin
if
inserting then
update
buku set stok = stok - :new.jumlah_buku where id_buku = :new.id_buku;
elsif
deleting then
update
buku set stok = stok + :old.jumlah_buku where id_buku = :old.id_buku;
elsif
updating then
update
buku set stok = stok + :old.jumlah_buku where id_buku = :old.id_buku;
update
buku set stok = stok - :new.jumlah_buku where id_buku = :new.id_buku;
end
if;
end;