Mengenal Oracle PL/SQL (2): Struktur

Setelah melihat contoh penggunaannya, sekarang mari kita bahas dasar-dasar PL/SQL. Silahkan lihat block PL/SQL yang telah kita bahas tersebut:

DECLARE
V_rcg_min NUMBER;
v_rcg_max number;
V_iterasi NUMBER;
BEGIN
V_rcg_min:= &1;
v_rcg_max:= &2;
V_iterasi:=V_rcg_min;
WHILE V_iterasi <= v_rcg_max LOOP
delete from MYTAB where rcg_id=V_iterasi;
commit;
V_iterasi:=V_iterasi+1;
END LOOP;
dbms_output.put_line('Deleting sucess');
dbms_output.put_line('Min RCG_ID '||V_rcg_min);
dbms_output.put_line('Max RCG_ID '||V_rcg_max);
EXCEPTION
WHEN OTHERS THEN dbms_output.put_line('error here');
END;
/


Struktur pokok PL/SQL adalah sebagai berikut
DECLARE
BEGIN
END;
/

DECLARE
Berisi deklarasi variabel. Adapun isi dari deklarasi variabel adalah nama variable, tipe data, constraint, dan default value. Setiap satu deklarasi diakhiri dengan tanda ; (titik koma). Contoh:

  1. Yang wajib ada : nama variabel dan tipe data
    v_rcg_min NUMBER;
  2. Dengan menambahkan nilai default
    v_jam_kerja INTEGER DEFAULT 40;
    v_jam_kerja INTEGER := 0;
  3. Dengan menambahkan constraint “not null” dan nilai default
    v_acc_id INTEGER(4) NOT NULL := 9999;
  4. Deklarasi konstanta
    v_jumlah_hari_pertahun CONSTANT INTEGER := 366;
    v_wni CONSTANT BOOLEAN := FALSE;
  5. Memakai tipe data dari suatu kolom di tabel (contoh, tabel: tbl emp, kolom: empid)
    v_empid tbl_emp.empid%TYPE;
  6. Contoh lain, silahkan lihat referensi

Bagian Utama
Bagian Utama ada di antara BEGIN dan END. Setelah END, tambahkan tanda ; (titik koma). Agar block PL/SQL bisa dieksekusi, tambahkan baris baru di bawah END dan beri tanda / (slash atau garis miring).

Bagian utama berisi operasi (pekerjaan) yang kita lakukan. Contoh block PL/SQL di atas berisi:
– Memberi nilai variable
– Operasi SQL (delete dan commit)
– Operasi aritmatika (penjumlahan )
– Control struktur ( LOOP dan WHILE)
– EXCEPTION (error handler)

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;
/

Operasi SQL
Hampir semua perintah SQL bisa dijalankan di sini. Iya dong, khan sesuai dengan namanya, di mana PL/SQL adalah pengembangan dari SQL.

Control Struktur
Macam-macam control structure adalah:
– Testing Conditions: IF dan CASE
– Controlling Loop Iterations: LOOP dan EXIT
– Sequential Control: GOTO dan NULL

Menggunakan LOOP
Contoh yang telah saya pakai di atas adalah WHILE …LOOP
WHILE V_iterasi <= v_rcg_max LOOP
delete from MYTAB where rcg_id=V_iterasi;
commit;
V_iterasi:=V_iterasi+1;
END LOOP;

Dengan hasil yang sama, kita bisa menggunakan LOOP … EXIT WHEN
LOOP
delete from MYTAB where rcg_id=V_iterasi;
commit;
V_iterasi:=V_iterasi+1;
EXIT WHEN V_iterasi > v_rcg_max;
END LOOP;

Bisa juga dengan memakai LOOP dan di dalamnya ada IF … THEN
LOOP
delete from MYTAB where rcg_id=V_iterasi;
commit;
V_iterasi:=V_iterasi+1;
IF (V_iterasi > v_rcg_max) THEN
exit;
END IF;
END LOOP;

Contoh Menggunakan IF … THEN

IF (v_gaji > v_umr) THEN
v_bonus:=v_gaji*2;
END IF;

IF (v_gaji < v_umr) THEN
v_bonus:=v_gaji*4;
ELSIF (v_gaji = v_umr) THEN
v_bonus:=v_gaji*3;
ELSE
v_bonus:=v_gaji*2;
END IF;

Contoh Mengguakan CASE

v_nilai := 'B';
CASE v_nilai
WHEN 'A' THEN v_predikat := 'Excellent';
WHEN 'B' THEN v_predikat := 'Very Good';
WHEN 'C' THEN v_predikat := 'Good';
WHEN 'D' THEN v_predikat := 'Fair';
WHEN 'F' THEN v_predikat := 'Poor';
ELSE v_predikat := 'Nothing';
END CASE;

Referensi
Oracle┬« Database PL/SQL User’s Guide and Reference 10g Release 2 (10.2)

This entry was posted in SQL and PL/SQL and tagged , , . Bookmark the permalink.

5 Responses to Mengenal Oracle PL/SQL (2): Struktur

  1. Kim Rich says:

    5903zsghna563xnk

  2. Ari Artama says:

    Thanks artikelnya…

  3. adit says:

    artikelnya manteps nih, sukses trs pak rohmad

  4. read me says:

    Thanks , I have just been looking for information approximately this topic for a long time and yours is the best I
    have discovered till now. But, what in regards to the bottom line?

    Are you positive concerning the source?

  5. read me says:

    I am really delighted to glance at this weblog posts which carries lots of useful facts,
    thanks for providing these data.

Leave a Reply

Your email address will not be published. Required fields are marked *