Tuesday, 1 December 2015

BACK-END PROGRAMMING

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;

No comments:

Post a Comment