Berikut adalah lanjutan dari Catatan PL/SQL Oracle sebelumnya. Semoga bermanfaat.
Pengambilan suatu nilai dari hasil Query
Berikut adalah sintaks PL/SQL untuk mengambil hasil dari suatu Query. Kemudian hasil tersebut disimpan dalam suatu variable. Variable yang menyimpan hasil Query itu dapat digunakan untuk perintah selanjutnya. Dalam contoh ini, variable tersebut hanya dikeluarkan nilainya saja.
DECLARE PHarga NUMBER(5); PNama VARCHAR2(15); BEGIN PHarga:= 500; SELECT nama INTO PNama FROM Barang WHERE Harga = PHarga; DBMS_OUTPUT.PUT_LINE('Nama Barang = '||PNama||', Harga = '||PHarga); END;
Pengkondisian IF-THEN-ELSE
Secara sederhana, struktur dasar dari pengkondisian IF-THEN dalam PL/SQL adalah sebagai berikut.
IF (kondisi) THEN (aksi jika kondisi terpenuhi) END IF;
Berikut adalah sintaks untuk pengkondisian IF-THEN sederhana.
DECLARE PHarga NUMBER(5); BEGIN PHarga := 500; IF (PHarga > 100) THEN --Jika syarat terpenuhi, lakukan aksi dibawah ini. DBMS_OUTPUT.PUT_LINE('PHarga diatas 100'); END IF; --akhir dari pengkondisian. END;
Berikut adalah contoh penggunaan IF-THEN-ELSE :
DECLARE PId VARCHAR2(3); PHarga NUMBER(5); BEGIN PId := 'B03'; SELECT harga INTO PHarga FROM Barang WHERE IDB = PId; --mengambil nilai harga pada table barang lalu dimasukkan ke dalam PHarga. IF (PHarga > 3000) THEN DBMS_OUTPUT.PUT_LINE('Mahal!'); ELSE DBMS_OUTPUT.PUT_LINE('Murah!'); END IF; END;
Nah, jika ingin menggunakan lebih dari satu pengkondisian sekaligus, berikut contohnya :
DECLARE PId VARCHAR2(3); PHarga NUMBER(5); BEGIN PId := 'B02'; SELECT harga INTO PHarga FROM Barang WHERE IDB = PId; IF PHarga > 3500 THEN DBMS_OUTPUT.PUT_LINE('Mahal!'); ELSIF PHarga < 3500 THEN DBMS_OUTPUT.PUT_LINE('Murah!'); ELSIF PHarga = 3500 THEN DBMS_OUTPUT.PUT_LINE('Harga pas!'); END IF; END;
Pengkondisian CASE-WHEN
Struktur dasar dari pengkondisian ini adalah :
CASE (variable yang menjadi referensi pengkondisian) WHEN (suatu nilai) THEN (aksi); WHEN (suatu nilai 2) THEN (aksi2); END CASE;
Berikut adalah contoh penggunaan CASE-WHEN :
DECLARE grade VARCHAR2(1); BEGIN grade := 'A'; CASE (grade) WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Luar biasa'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Sangat bagus'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Rata-rata'); WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Kurang'); WHEN 'E' THEN DBMS_OUTPUT.PUT_LINE('Sangat kurang'); END CASE; END;
Perulangan WHILE
Struktur dasar sintaks PL/SQL untuk perulangan dengan menggunakan While adalah :
WHILE(pengkondisian) LOOP --aksi yang dilakukan jika kondisi terpenuhi. END LOOP;
Berikut adalah sintaks PL/SQL perulangan menggunaan WHILE :
DECLARE i NUMBER := 1; BEGIN WHILE (i <= 10) LOOP DBMS_OUTPUT.PUT_LINE('Baris ke : '||i); i := i+1; --tanpa penambahan nilai i ini, perulangan tidak akan berhenti. END LOOP; END;
wahhh putchair membantuku,,, maaciy pu,,, 🙂
anyone please help
aku mencoba menarik data dengan query berikut :
select no_rekening, cabang, status, Status_rek
from branch
hasilnya sebagai berikut :
no_rekening cabang status Status_rek
1160100148452 CBG_JAKSEL S new
1120100013874 CBG_JAKSEL TS topup
1480100413205 CBG_JAKTIM S topup
1540100239791 CBG_JAKUT TS new
saya ingin membuat field baru dengan kondisi sebagai berikut :
no_rekening cabang status Status_rek status_ok
1160100148452 CBG_JAKSEL S new S
1120100013874 CBG_JAKSEL TS topup S
1480100413205 CBG_JAKTIM S topup S
1540100239791 CBG_JAKUT TS new TS
saya menemukan kesulitan untuk tambahan query selectnya
bisakah membantu saya
Field tambahan “status_ok” itu berdaarkan apa?
Saya misalkan saja, status_ok itu berdasarkan field status_rek ya.
Misalkan kondisinya :
Jika status_rek = new, maka status_ok = S.
Dan jika status_rek = old, maka status_ok = TS.
Dan jika status_rek bukan new ataupun old, maka status_ok = ” (string kosong).
Querynya adalah :
select no_rekening, cabang, status, Status_rek, decode(Status_rek,’new’,’S’,’old’,’TS’,”) as status_ok
from branch
Semoga membantu.
Tulisannya bermanfaat n_n