Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini...

22
PROGRAM STUDI TEKNIK INFORMATIKA 2019 Pemrograman Database 2 PROGRAM STUDI SISTEM INFORMASI 2019 Disusun oleh : Tim Dosen Sekolah Tinggi Ilmu Komputer Dinamika Bangsa - Jambi

Transcript of Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini...

Page 1: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

PROGRAM STUDI TEKNIK INFORMATIKA 2019

Pemrograman Database 2

PROGRAM STUDI SISTEM INFORMASI

2019

Disusun oleh : Tim Dosen

Sekolah Tinggi Ilmu Komputer Dinamika Bangsa - Jambi

Page 2: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

BAB IV

1.1. PENGENALAN PL/SQL

PL/SQL (Procedural Language extensions to SQL) adalah sebuah teknologi dari Oracle yang memperbolehkan anda membuat blok program sebagai mana layak nya pemrograman procedural seperti C, Fotran, Cobol dan lainnya. Tanpa adanya PL/SQL, Oracle akan melakukan perintah yang berulang-ulang ke dalam database server dan ini tentu akan memurunkan performa, terutama dalam masalah kecepatan akses data. hal ini disebabkan karena oracle melakukan eksekusi statement oracle sekali dalam setiap waktu.

Sedangkan dengan menggunakan PL/SQL , Aplikasi dapat mengirimkan

beberapa (sekumpulan ) statement kedalam database secara langsung dalam sekali waktu.

1.2. BLOK PL/SQL

Blok PL/SQL Oracle Terdiri dari tiga bagian yaitu

DECLARE -->opsional --berisikan deklarasi variabel, konstanta, prosedur, fungsi, dll BEGIN-->wajib --statement-statement PL/SQL --statement-statement SQL EXCEPTION-->opsional --berisi perintah untuk mengatasi error yang mungkin terjadi END;-->wajib

DASAR-DASAR PL/SQL

Page 3: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Tipe-Tipe data yang di dukung oleh oracle yang di tulis dalam Blok PL/SQL.

Nama Tipe Keterangan

INTEGER Numerik Untuk Semua Tipe Numerik

BINARY_INTEGER Numerik Didalamnya Meliputi tipe unsigned Integer

DEC Numerik Untuk Bilangan real(Pecahan)

DOUBLE PRECISION

Numerik Untuk Bilangan real presisi tinggi

INTEGER Numerik Untuk Bilangan Bulat

INT Numerik Untuk Bilangan Bulat

NUMERIC Numerik Sama dengan NUMBER

REAL Numerik Sama Dengan NUMBER

SMALLINT Numerik Untuk Bilangan Bulat dengan rentang yang kecil

VARCHAR2 Karakter Untuk string dengan panjang dinamis sesuai dengan panjang maksimal yang di tentukan

CHAR Karakter Untuk String untuk Panjang yang sudah Pasti

LONG Karakter Untuk string dengan panjang yang sudah pasti

DATE Tanggal Untuk Tipe Tanggal

BOOLEAN Bolean Bernilai TRUE dan FALSE

ROWID Rowid Untuk Tipe Rowid

Contoh :

Apa yang terjadi? Text yang kita tulis belum muncul? Ini disebabkan karena kita belum mengangtifkan variabel sistem SERVEROUTPUT didalam SQL*Plus. Perintah untuk menghidupakannya yaitu:

Page 4: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

1.3. Komentar Komentar adalah bagian dari kode program yang tidak di eksekusi. Komentar dalam oracle dapat dibuat dengan menggunakan dua cara, yaitu dengan menggunakan tanda /*…*/ atau -- . perintah /*…*/ di adopsi dari bahasa c yang di gunakan untuk komentar yang lebih dari satu baris. Komentar -- hanya di guanakan untuk satu baris. Contoh

/* ini adalah komentar yang banyaknya

Lebih dari satu baris */

1.4. Variabel dan konstansta 1.4.1. Variabel

Cara Deklarasi variabel dalam oracle

x integer; y number; nama varchar2(25);

Note

Variabel tidak boleh di awali oleh angka.

Variabel tidak boleh mengandung simbol Contoh Penggunaan variable dalam Blok PL/SQL Declare

nama varchar2(30); jabatan varchar2(30); gaji number (6,2);

begin select last_name, job_id, salary into nama, jabatan, gaji from employees where employee_id =120; dbms_output.put_line('Data Karyawan dengan NIK 120'); dbms_output.put_line('Nama : '|| nama); dbms_output.put_line('Jabatan : '|| jabatan);

Page 5: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

dbms_output.put_line('Gaji : '|| gaji); end;

1.4.2. Konstanta

Bentuk Umum Konstanta NamaKonstanta CONSTANT tipe_data:=nilai; Contoh deklarasi konstanta declare

pi constant real:=3.14;

lebar constant integer:=10;

Contoh : Declare --deklarasi variabel dan konstanta

Nama Varchar2(30); GaPok number(8,2); Pajak constant real := 0.10; Tunjangan constant real := 0.25 ; Gajibersih number(8,2);

Begin Select Last_name, Salary INTO Nama, Gapok From Employees Where Department_id = 10; Gajibersih:= gapok + (gapok * tunjangan) - (gapok * pajak); Dbms_output.put_line ('Data Gaji Karyawan'); Dbms_output.put_line ('-----------------------------'); Dbms_output.put_line ('Nama : '|| nama); Dbms_output.put_line ('Gaji Pokok : '|| to_char(gapok,'$99,999')); Dbms_output.put_line ('Tunjangan : '|| gapok * tunjangan ); Dbms_output.put_line ('Pajak : '|| gapok * pajak ); Dbms_output.put_line ('Gaji Bersih : '|| gajibersih);

End;

Page 6: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta
Page 7: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

2.1. Operator 2.1.1. Operator Assignment

Operator Pengerjaan di tandai dengan (:=) Contoh NAMA := ‘Toko Mulya’ ; JUMLAH := 12; 2.1.2. Operator Logik Operator Logik Merupakan Operator yang memberikan nilai TRUE atau FALSE

Operator Keterangan

AND Bernilai Benar jika Semua Kondisinya Terpenuhi

OR Bernilai Benar jika salah satu atau semua kondisinya terpenuhi`

NOT Ingkaran

2.1.3. Operator Aritmatika Operator ini di gunakan untuk operasi-operasi aritmatika

Operator Keterangan

+ Penambahan

- Pengurangan

* Perkalian

/ Pembagian

MOD Modulus (sisa Bagi)

Contoh Declare Hasil integer; Begin Hasil := 10/3; Dbms_output.put_line(‘10/3=’||to_char(hasil)); End;

OPERATOR DAN FUNGSI BAKU

Page 8: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Hasil yang di berikan Operator

Contoh Declare Hasil real; Begin Hasil := 10/3; Dbms_output.put_line(‘10/3=’||to_char(hasil)); End;

2.1.4. Operator Relasional Opertor ini digunakan untuk pengkondisian dan percabangan

Operator Keterangan

> Lebih Besar

>= Lebih Besar atau sama dengan

< Lebih Kecil

<= Lebih Kecil atau sama dengan

= Sama dengan

<> Tidak sama dengan

2.1.5. Operator pada Tipe Data String Dalam Oracle kita sering melakukan penggabungan terhadap string. Oracle menyediakan operator || untuk menjawab pertanyaan. Contoh

Declare Nama varchar2(30) := ‘PT. Mulya’; Kota varchar2(15):=’Bandung’; Spasi char(1):=’ ‘; Begin

anonymous block completed 10/3=3

anonymous block completed 10/3=3.3333333333333333333333333333333333333

Page 9: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Dbms_output.put_line(Nama||spasi||kota); End;

Hasil dari penggunaan Operator ||

2.2. Fungsi Baku Dalam Oracle Fungsi Numerik

Fungsi Keterangan Contoh

ABS Memperoleh Nilai Absolut ABS(-123)=123

ROUND(Nilai,Presisi) Melakukan pembulatan bilangan pecahan dengan presisi yang di inginkan

ROUND(123.86,1)=123.9

TRUNC Melakuan pemotongan bilangan pecahan dengan presisi yang dinginkan

TRUNC(123.86,1)=123.8

FLOOR Melakukan pemotongan bilangan yang ada di belakang koma

FLOOR(123.86)=123

CEIL Sama dengan FLOOR, hanya di lakukan pembulatan ke atas

CEIL(123.01)=124

SIGN Memberikan nilai 1 jika bilangan positif dan -1 jika bilangan negatif

SIGN(123)=1 SIGN(-123)=-1

MOD Menampilkan sisa bagi MOD(10,4) = 2

POWER Menampilkan hasil perpangkatan

POWER(2,4)=16

SQRT Menampilkan akar Kuadrat SQRT(16)=4

EXP Menampilkan hasil eksponen EXP(1)=2.7182818

Page 10: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

SIN COS TAN

Melakukan perhitungan Trigonometri

COS(0)=1

Note. Untuk mengecek fungsi diatas , gunakan contoh sintak berikut” Select MOD(10,4) from dual. 2.2.1. Fungsi Karakter dan String

Fungsi Keterangan Contoh

LENGTH Memperoleh Panjang String LENGTH(‘ABC’)=3

SUBSTR(s,x,y) Mengambil subtring dari string s, mulai dari posisi x, sebanyak y karakter

SUBSTR(‘ABCD’,2,3)=’BCD’

CONCAT Melakukan Penggabungan string CONCAT(‘A’,’B’)=’AB’

UPPER Mengubah String dari huruf kecil menjadi huruf besar

UPPER(‘ab’)=’AB’

LOWER Mengubah string menjadi kecil LOWER(‘AB’)=’ab’

INITCAP Mengubah huruf pertama dari setiap kata Menjadi huruf Besar

INITCAP(‘ab cd ef’)=’Ab Cd Ef’

2.2.2. Fungsi Konversi

Fungsi Keterangan Contoh

TO_CHAR Mengkonversi nilai string Mengkonversi tanggal ke string

T0_CHAR(123)=’123’

TO_NUMBER Mengkonversi string ke nilai TO_NUMBER(‘123’=123

TO_DATE(STRING, FORMAT_TANGGAL)

Mengkonversi String ke Tanggal

TO_DATE(’21-MAR-1978’,’dd mon yyyy’)=21-MAR-1978

2.2.3. Fungsi Waktu

Fungsi Keterangan Contoh

SYSDATE Menampilkan Tanggal Hari ini

LAST_DAY Menampilkan tanggal terakhir dari bulan yang diberikan

LAST_DAY(1-JAN-02’=31-JAN-02

NEXT_DAY Menampilkan hari dan tangal yang diberikan setelah tanggal yang ditentukan

NEXT_DAY(‘1-AUG-02’,MONDAY’) = 5-AUG-02

MONTHS_BETWEEN Menampilkan Selesih antara dua tanggal

MONTH_BETWEEN(‘1-MAR-02’,’1-JAN-02’=2

Page 11: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Contoh : set serveroutput on set verify off declare

--deklarasi variabel vnomor number(3); --nomor induk karyawan vnama varchar2(20); --nama karyawan vtgl_bekerja date; --tgl. mulai bekerja vgapok number(6); --gaji pokok vgaber number(6); --gaji bersih karyawan

--deklarasi konstanta kbonus constant number(4):=5000; kgaris constant varchar2(40):=LPAD('-', 40, '-');

begin vnomor := SUBSTR('&input_nomor_karyawan',1,3);

SELECT CONCAT(First_name||' ', Last_name), hire_date, Salary INTO vnama, vtgl_bekerja, vgapok FROM Employees

WHERE Employee_id = vnomor; vgaber := vgapok + kbonus; dbms_output.put_line('Data Karyawan'); dbms_output.put_line(kgaris); dbms_output.put_line('No. Karyawan : '||vnomor); dbms_output.put_line('Nama Karyawan : '||vnama); dbms_output.put_line('Tgl. Mulai Bekerja : '||TO_CHAR

(vtgl_bekerja,'dd Month yyyy')); dbms_output.put_line('Gaji Pokok : '||TO_CHAR (vgapok, '$99,999.99')); dbms_output.put_line('Bonus : '||TO_CHAR

(kbonus, '$99,999.99')); dbms_output.put_line(kgaris); dbms_output.put_line('Gaji Bersih : '||TO_CHAR

(vgaber, '$99,999.99')); dbms_output.put_line(kgaris);

Exception when no_Data_found Then dbms_output.put_line('Karyawan No. '||vnomor||' tidak ada..');

End;

Page 12: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta
Page 13: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

3.1. Simple Loop Bentuk dasar perulangan dengan simple loop adalah sebagai berikut : LOOP Pernyataan; ………………………….; ………………………….;

END LOOP; Contoh 1 : Set serveroutput on

declare k integer;

begin k:=1; loop dbms_output.put_line('Baris Ke '|| to_char(k)); k:=k+1; exit when k>5; end loop;

end; Kalau di jalankan output nya adalah sebagai berikut

Contoh 2 :

set serveroutput on declare vnomor number(3):=100; vnama varchar2(30); kgaris constant varchar2(30):=LPAD('-',30,'-'); begin dbms_output.put_line('Data Karyawan'); dbms_output.put_line(kgaris); dbms_output.put_line(RPAD('NIK',5,' ')||RPAD('Nama',15,' '));

PERULANGAN (LOOP)

Page 14: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

dbms_output.put_line(kgaris); Loop Select Last_name INTO vnama FROM Employees

where employee_id=vnomor; dbms_output.put_line(RPAD(vnomor,5,' ')||RPAD(vnama,15,' ')); vnomor := vnomor + 1; Exit when vnomor>110; End Loop; dbms_output.put_line(kgaris); End;

3.2. WHILE ... LOOP Bentuk umum perulangan dengan While .. Loop adalah sebagai berikut :

WHILE kondisi LOOP Pernyataan ; Pernyataan ; END LOOP;

Contoh 1 : declare k integer;

begin k:=1; while k<=5 loop dbms_output.put_line('Baris Ke '|| to_char(k)); k:=k+1;

Page 15: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

end loop; end;

Output yang dihasilkan sama dengan output pada contoh 1 konsep Simple Loop di atas. Contoh 2 :

set serveroutput on declare

vnomor number(3):=100; vnama varchar2(30); kgaris constant varchar2(30):=LPAD('-',30,'-');

begin dbms_output.put_line('Data Karyawan'); dbms_output.put_line(kgaris); dbms_output.put_line(RPAD('NIK',5,' ')||RPAD('Nama',15,' ')); dbms_output.put_line(kgaris);

while vnomor <= 110 Loop

Select Last_name INTO vnama FROM Employees where employee_id=vnomor;

dbms_output.put_line(RPAD(vnomor,5,' ')||RPAD(vnama,15,' ')); vnomor:=vnomor+1;

End Loop; dbms_output.put_line(kgaris);

End; Output yang dihasilkan sama dengan output pada contoh 2 konsep Simple Loop di atas.

3.3. FOR .. LOOP Perulangan dengan konsep For .. Loop memiliki 2 bentuk, yaitu :

1. For .. Loop yang menggunakan variabel indeks, 2. For .. Loop yang menggunakan subquery.

FOR .. LOOP dengan Variabel Indeks Bentuk umumnya adalah sebagai berikut :

FOR variabel IN indeks_awal..indeks_akhir LOOP Pernyataan; Pernyataan; END LOOP;

Contoh 1 :

declare k integer;

Page 16: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

begin for k in 1..5 loop dbms_output.put_line('Baris Ke '|| to_char(k)); end loop; end;

Output yang dihasilkan sama dengan output pada contoh 1 konsep Simple Loop di atas. Contoh 2 :

set serveroutput on declare

vnomor number(3); vnama varchar2(30); kgaris constant varchar2(30):=LPAD('-',30,'-');

begin dbms_output.put_line('Data Karyawan'); dbms_output.put_line(kgaris); dbms_output.put_line(RPAD('NIK',5,' ')||RPAD('Nama',15,' ')); dbms_output.put_line(kgaris);

For vnomor in 100..110 Loop

Select Last_name INTO vnama FROM Employees where employee_id=vnomor;

dbms_output.put_line(RPAD(vnomor,5,' ')||RPAD(vnama,15,' ')); End Loop;

dbms_output.put_line(kgaris); End;

Output yang dihasilkan sama dengan output pada contoh 2 konsep Simple Loop di atas. FOR .. LOOP dengan Subquery Bentuk umumnya adalah sebagai berikut :

FOR variabel IN (Subquery) LOOP Pernyataan; Pernyataan; END LOOP;

Contoh :

set serveroutput on declare

kgaris constant varchar2(30):=LPAD('-',30,'-'); begin

Page 17: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

dbms_output.put_line('Data Karyawan'); dbms_output.put_line(kgaris); dbms_output.put_line(RPAD('NIK',5,' ')||RPAD('Nama',15,' ')); dbms_output.put_line(kgaris);

FOR i in (Select Employee_id, Last_name FROM Employees where

employee_id between 100 and 110) Loop dbms_output.put_line(RPAD(i.employee_id,5,' ')||

RPAD(i.last_name,15,' ')); End Loop; dbms_output.put_line(kgaris);

End; Output yang dihasilkan sama dengan output pada contoh 2 konsep Simple Loop di atas.

Page 18: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

4.1. Logika IF Logika percabangan untuk menyatakan decision/pilihan terdiri dari :

1. IF dengan 1 kondisi 2. IF dengan 2 kondisi 3. IF dengan banyak kondisi

IF dengan 1 kondisi Bentuk umum lofika IF dengan 1 kondisi adalah sebagai berikut :

IF kondisi THEN Pernyataan; END IF;

Contoh :

set serveroutput on set verify off declare

vnomor number(3); vnama varchar2(10); vbonus real;

begin vnomor := '&input_nomor_karyawan'; select last_name, commission_pct into vnama, vbonus from employees where employee_id = vnomor; dbms_output.put_line('No. Karyawan : '||vnomor); dbms_output.put_line('Nama Karyawan : '||vnama); --memeriksa nilai dari variabel vbonus if vbonus is null then dbms_output.put_line('Tidak mendapatkan bonus'); end if;

end; Hasil yang diperoleh (input nomor karyawan : 100

PERCABANGAN (DECISION)

Page 19: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Contoh 2 set serveroutput on declare

vket varchar2(30):=''; vgaris varchar2(50):=LPAD('-',50,'-');

begin dbms_output.put_line('Data Bonus Karyawan'); dbms_output.put_line(vgaris); dbms_output.put_line(rpad('Nama',27,' ')|| Rpad('Bonus',5,' ')||vket); dbms_output.put_line(vgaris); for i in

(select last_name, commission_pct as bonus from employees where last_name like 'A%') loop

if i.bonus is not null then vket:='-->mendapat bonus';

end if; dbms_output.put_line(rpad(i.last_name,25,' ')|| lpad(to_char(i.bonus,'0.99'),5,' ')||' '||vket); vket:='';

end loop; dbms_output.put_line(vgaris);

end; Kalau Statement di atas di jalankan maka outputnya adalah:

IF dengan 2 Kondisi Bentuk umum lofika IF dengan 2 kondisi adalah sebagai berikut :

IF kondisi THEN Pernyataan A; Else Pernyataan B; END IF;

Page 20: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Contoh set serveroutput on declare

vket varchar2(30):=''; vgaris varchar2(50):=LPAD('-',50,'-');

begin dbms_output.put_line('Data Bonus Karyawan'); dbms_output.put_line(vgaris); dbms_output.put_line(rpad('Nama',27,' ')|| Rpad('Bonus',5,' ')||vket); dbms_output.put_line(vgaris); for i in

(select last_name, commission_pct as bonus from employees where last_name like 'A%')loop

if i.bonus is not null then vket:='-->mendapat bonus'; else vket:='-->tidak mendapat bonus'; end if;

dbms_output.put_line(rpad(i.last_name,25,' ')|| lpad(to_char(i.bonus,'0.99'),5,' ')||' '||vket);

vket:=''; end loop; dbms_output.put_line(vgaris);

end;

IF dengan Banyak Kondisi Bentuk umum lofika IF dengan 2 kondisi adalah sebagai berikut :

IF kondisi_1 THEN Statemen A; ELSE IF( KONDISI_2) THEN Statemen B; ELSE Statemen C; END IF; END IF;

Page 21: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

Contoh 1

set serveroutput on declare

vket varchar2(100); vgaris varchar2(80):=LPAD('-',80,'-');

begin dbms_output.put_line('Data Bonus Karyawan'); dbms_output.put_line(vgaris); dbms_output.put_line(rpad('Nama',25,' ') || rpad('Lama Kerja',10,' ')

||vket); dbms_output.put_line(vgaris); for i in (select last_name, round((sysdate-hire_date)/365,0) as lama_kerja from employees where department_id between 10 and 40)loop

if i.lama_kerja >= 24 then vket:='-->mendapat bonus jalan-jalan ke eropa'; else if i.lama_kerja>= 22 then vket:='-->mendapat bonus jalan-jalan ke Bali'; else vket:='-->mendapat bonus 1 bulan gaji' ; end if; end if;

dbms_output.put_line(rpad(i.last_name,25,' ')||rpad(i.lama_kerja||

' tahun',10,' ')||vket); vket:='';

end loop; dbms_output.put_line(vgaris);

end;

Page 22: Pemrograman Database II€¦ · Komentar -- hanya di guanakan untuk satu baris. Contoh /* ini adalah komentar yang banyaknya Lebih dari satu baris */ 1.4. Variabel dan konstansta

4.2. Logika CASE Bentuk umum penggunaan logika CASE adalah sebagai berikut : CASE WHEN ekspresi_1 THEN pernyataan_1; WHEN ekspresi_2 THEN pernyataan_2; …. Else Pernyataan_alternatif;

END CASE; Contoh Implementasi dengan statemen case

set serveroutput on declare vket varchar2(100); vgaris varchar2(80):=LPAD('-',80,'-'); begin

dbms_output.put_line('Data Bonus Karyawan'); dbms_output.put_line(vgaris); dbms_output.put_line(rpad('Nama',25,' ') || rpad('Lama Kerja',10,' ') ||vket); dbms_output.put_line(vgaris); for i in (select last_name, round((sysdate-hire_date)/365,0) as lama_kerja from employees where department_id between 10 and 40)loop case when i.lama_kerja >= 24 then vket:='-->mendapat bonus jalan-jalan ke eropa'; when i.lama_kerja>= 22 then vket:='-->mendapat bonus jalan-jalan ke Bali'; else vket:='-->mendapat bonus 1 bulan gaji' ; end case; dbms_output.put_line(rpad(i.last_name,25,' ')||rpad(i.lama_kerja||

' tahun',10,' ')||vket); vket:=''; end loop; dbms_output.put_line(vgaris);

end; Output yang diperoleh sama dengan output dari hasil perintah menggunakan logika IF.