[Praktikum SBD] Bab 5 Oracle 1 Fixx

30
BAB V Oracle I 5.1. Tujuan 1. Mengerti penggunaan percabangan (pemilihan/kodisional) dalam PL/SQL 2. Mengerti penggunaan pengulangan (looping/iterasi) dalam PL/SQL 3. Mengerti esensi penggunaan sekuensial dalam PL/SQL 5.2. DasarTeori 5.2.1 Procedural Language SQL Karena pada SQL tidak mendukung pemrograman secara prosedural, maka dikembangkanlah PL/SQL. PL merupakan kependekan dari ProceduralLanguagePL/SQL mengkombinasikan kekuatan dan kefleksibilitasan SQL dengan pemrograman prosedural. PL/SQL memiliki keistimewaan sebagai berikut: a. Programmer dapat mendeklarasikan variabel untuk digunakan selama pemrosesan statement. b. Programmer dapat menggunakan penanganan kesalahan untuk mencegah kegagalan program. c. Programmer dapat menulis program yang interaktif yang menerima input dari user. d. Programmer dapat membagi fungsi-fungsi ke dalam blok-blok logik dari kode. Teknik pemrograman

Transcript of [Praktikum SBD] Bab 5 Oracle 1 Fixx

Page 1: [Praktikum SBD] Bab 5 Oracle 1 Fixx

BAB V

Oracle I

5.1. Tujuan

1. Mengerti penggunaan percabangan (pemilihan/kodisional) dalam PL/SQL

2. Mengerti penggunaan pengulangan (looping/iterasi) dalam PL/SQL

3. Mengerti esensi penggunaan sekuensial dalam PL/SQL

5.2. DasarTeori

5.2.1 Procedural Language SQL

Karena pada SQL tidak mendukung pemrograman secara

prosedural, maka dikembangkanlah PL/SQL. PL merupakan kependekan

dari ProceduralLanguagePL/SQL mengkombinasikan kekuatan dan

kefleksibilitasan SQL dengan pemrograman prosedural.

PL/SQL memiliki keistimewaan sebagai berikut:

a. Programmer dapat mendeklarasikan variabel untuk digunakan selama

pemrosesan statement.

b. Programmer dapat menggunakan penanganan kesalahan untuk

mencegah kegagalan program.

c. Programmer dapat menulis program yang interaktif yang menerima

input dari user.

d. Programmer dapat membagi fungsi-fungsi ke dalam blok-blok logik

dari kode. Teknik pemrograman secara modular ini mendukung

fleksibilitas selama pengembangan aplikasi.

e. Statement SQL dapat diproses secara simultan untuk performansi

keseluruhanyang lebih baik.

5.2.2 Deklarasi Variabel

Bagian deklarasi variabel di antara kata kunci DECLARE dan

BEGIN. Penamaan variabel tidak bersifat case sensitive. Tipe data variabel

dapat berupa salah satu tipe data database Oracle atau tipe data built in

PL/SQL.

Page 2: [Praktikum SBD] Bab 5 Oracle 1 Fixx

5.2.3. Syntax Penulisan PL/SQL

5.2.3.1 Pengkondisian

a. Perintah IF-THEN

Rangkaian perintah-perintah dieksekusi hanya jika

kondisi adalah true. Jika kondisi bernilai false atau null,

perintah IF tidak melakukan apa-apa. Dalam salah satu kasus,

kontrol berlalu kepada perintah selanjutnya.

Bentuk umum :

IF condition THEN

sequence_of_statements

END IF;

b. Perintah IF-THEN-ELSE

Rangkaian perintah-perintah dalam klausa ELSE

dieksekusi hanya jika kondisi bernilai false atau null. Jadi,

klausa ELSE memastikan bahwa rangkaian perintah-perintah

tersebut dieksekusi.

Bentuk umum :

IF condition THEN

sequence_of_statements1

ELSE

sequence_of_statements2

END IF;

c. Perintah IF-THEN-ELSIF

Jika kondisi pertama bernilai false atau null, klausa ELSE

IF akan menguji kondisi lainnya. Perintah IF dapat memiliki

sejumlah klausa ELSE IF; klausa final ELSE bersifat opsional

(bisa digunakan atau tidak). Kondisi-kondisi dievaluasi satu

demi satu dari atas ke bawah. Jika suatu kondisi bernilai true,

rangkaian perintah-perintah yang ada di dalamnya dieksekusi

dan kontrol akan menuju ke perintah selanjutnya. Jika seluruh

Page 3: [Praktikum SBD] Bab 5 Oracle 1 Fixx

kondisi bernilai false atau null, maka rangkaian perintah-

perintah di dalam klausa ELSE yang akan dieksekusi.

Bentuk umum :

IF condition1 THEN

sequence_of_statements1

ELSIF condition2 THEN

sequence_of_statements2

ELSE

sequence_of_statements3

END IF;

d. Perintah CASE

Seperti halnya perintah IF, perintah CASE menyeleksi

satu rangkaian perintah-perintah untuk dieksekusi. Namun,

untuk menyeleksi rangkain perintah-perintah tersebut, perintah

CASE menggunakan penyeleksi, bukannya menggunakan

banyak ekspresi-ekspresi Boolean.

Bentuk umum :

[<>]

CASE selector

WHEN expression1 THEN sequence_of_statements1;

WHEN expression2 THEN sequence_of_statements2;

WHEN expressionN THEN sequence_of_statementsN;

[ELSE sequence_of_statementsN+1;]

END CASE [label_name];

5.2.3.2 Perulangan

a. LOOP

Dengan setiap perulangan dari setiap putaran, rangkaian

perintah-perintah dieksekusi, lalu kontrol mulai lagi menuju ke

awal putaran.

Bentuk umum :

LOOP

Page 4: [Praktikum SBD] Bab 5 Oracle 1 Fixx

sequence_of_statements

END LOOP;

b. WHILE-LOOP

Sebelum setiap perulangan dari loop, kondisi dievaluasi.

Jika kondisi true, rangkaian perintah-perintah dieksekusi,

kemudian kontrol kembali ke awal loop. Jika kondisi false atau

null, loop diabaikan dan kontrol menuju ke perintah

selanjutnya.

Bentuk umum :

WHILE condition LOOP

sequence_of_statements

END LOOP;

c. FOR-LOOP

Jumlah perulangan melalui loop WHILE tidak diketahui

sampai loop berakhir, namun jumlah perulangan melalui loop

FOR telah diketahui sebelum loop dijalankan. Loop-loop FOR

berulang sejumlah jangkauan integer tertentu. Jangkauan ini

adalah bagian dari iteration scheme, yang diapit oleh kata-kata

kunci FOR dan LOOP. Tanda titik dua (..) bertindak sebagai

operator jangkauan. Sintaksnya adalah sebagai berikut:

Bentuk umum :

FOR counter IN [REVERSE] lower_bound..higher_bound

LOOP

sequence_of_statements

END LOOP;

5.2.4. Instalasi Oracle 11g

Untuk memulai proses instalasi Oracle 11g, buka file setup.exe pada

folder instalasi. Halaman instalasi akan muncul seperti pada gambar di

bawah.

Page 5: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.1 Memasukkan email address pengguna

Masukkan alamat email dan password akun Oracle jika ada, atau

biarkan kosong. Setelah itu klik Next.

Pilih opsi instalasi, pilih Create and configure database. Klik Next.

Gambar 5.2 Memilih pilihan instalasi

Pilih kelas sistem yang akan digunakan oleh database. Gunakan

Desktop Class untuk database yang hanya akan digunakan di PC sendiri.

Page 6: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.3 Memilih kelas sistem

Lakukan konfigurasi instalasi database Oracle. Pilih direktori tempat

menginstal database Oracle. Masukkan nama global database dan

password administrative. Klik Next.

Gambar 5.4 Melakukan konfigurasi dasar instalasi database

Setelah keseluruhan konfigurasi dilakukan, rangkuman summary

instalasi yang akan dilakukan akan ditampilkan. Kita dapat me-review poin

instalasi yang kurang atau perlu ditambahkan.Setelah semua dipastikan,

klik Finish.

Page 7: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.5 Summary instalasi sistem

Oracle akan mulai menginstal program-program yang dipilih sesuai

proses sebelumnya. Tunggu hingga proses ini selesai.

Gambar 5.6 Proses instalasi

Setelah proses instalasi selesai, akan muncul halaman Database

Configuration Assistant. Pilih Password Management untuk melakukan

pengaturan username dan password sistem.

Page 8: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.7 Konfigurasi bantudatabase

Pada halaman Password Management, hapus tanda cek Lock

Account dari username hr, masukkan password untuk username tersebut.

Klik OK.

Gambar 5.8 Password Management

Gambar 5.9 Password Management 2

Setelah ini, instalasi akan melakukan finishing dan keseluruhan

proses instalasi telah selesai.

Page 9: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.10Proses instalasi selesai

Page 10: [Praktikum SBD] Bab 5 Oracle 1 Fixx

5.3. Hasil Percobaandan dan Analisis Pembahasan

5.3.1. Loginke Oracle SQL Developer

Buka program aplikasi SQL Developerdari folder Oracle 11g.

Halaman awal akan muncul seperti pada gambar di bawah.

Gambar 5.11 Halaman kerja Oracle SQL Developer

Klik New Connection.Pada Connection Name masukkan nama

kelompok, username masukkan hr, dan passwordsesuai pada password

yang dimasukkan pada Password Management saat proses instalasi.

Hostname diisi localhostdan service name diisi orcl.

Gambar 5.12 Membuat koneksi database baru

Klik Test untuk menguji koneksi program ke database.Jika koneksi

berhasil, akan muncul teks Status: Success pada bagian kiri bawah hala-

man. Setelah itu klik Connect. Halaman kerja PL/SQL baru akan muncul

seperti gambar di bawah.

Page 11: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.13 Lembar kerja baru SQL Developer

5.3.2. PL/SQL fungsi pengkondisian

Untuk PL/SQL pengkondisian digunakan perintah IF-THEN dan IF-

THEN-ELSE.

Untuk perintah IF-THENdituliskan melalui contoh sebagai berikut.

SET SERVEROUTPUT ON

DECLARE

BIL INTEGER := 100;

BEGIN

IF MOD (BIL, 2) = 0 THEN

DBMS_OUTPUT.PUT_LINE(

TO_CHAR(BIL)||‘ adalah bilangan genap‘);

END IF;

END;

PL/SQL pengkondisian tersebut adalah untuk menampilkan suatu

nilai jika kondisi yang ditentukan terpenuhi.Dalam PL/SQL di atas,

kondisi yang dilihat adalah apakah variabel BIL mod 2 = 0 dengan BIL

adalah 100. Karena 100 mod 2 = 0, kondisi ini terpenuhi (bernilai true),

sehingga perintah untuk menampilkan ‘BIL adalah bilangan genap’

dilakukan, BIL diganti dengan 100.

Page 12: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.14 Fungsi PL/SQLIF-THEN

Untuk perintah IF-THEN-ELSE dituliskan melalui contoh sebagai

berikut.

SET SERVEROUTPUT ON

DECLARE

BIL INTEGER := 99;

BEGIN

IF MOD (BIL, 2) = 0 THEN

DBMS_OUTPUT.PUT_LINE(

TO_CHAR(BIL)||‘ adalah bilangan genap‘);

ELSE

DBMS_OUTPUT.PUT_LINE(

TO_CHAR(BIL)||‘ adalah bilangan ganjil‘);

END IF;

END;

PL/SQL pengkondisian tersebut adalah untuk menampilkan suatu

nilai jika kondisi yang ditentukan terpenuhi, dan nilai lain jika kondisi

tersebut tidak terpenuhi. Dalam PL/SQL di atas, kondisi yang dilihat

adalah apakah variabel BIL mod 2 = 0 dengan BIL adalah 99. Karena 99

mod 2 != 0, kondisi tidak terpenuhi (bernilai false), sehingga perintah yang

Page 13: [Praktikum SBD] Bab 5 Oracle 1 Fixx

dieksekusi adalah perintah pada bagian ELSE, yaitu untuk menampilkan

‘BIL adalah bilangan ganjil’, BIL diganti dengan 99.

Gambar 5.15 Fungsi PL/SQLIF-THEN-ELSE

5.3.3. PL/SQL fungsi perulangan

Untuk PL/SQL perulangan digunakan perintah WHILE dan FOR.

Untuk perintah WHILE dituliskan melalui contoh sebagai berikut.

SET SERVEROUTPUT ON

DECLARE

BIL_1 INTEGER;

BIL_2 INTEGER;

BEGIN

BIL_1 := 0;

BIL_2 := 100;

WHILE BIL_1 < 5 LOOP

BIL_1 := BIL_1 + 1;

BIL_2 := BIL_2 + 10;

DBMS_OUT_PUT.PUT_LINE(‘BILANGAN KE-’|| BIL_1 ||

‘, ADALAH ’|| BIL_2);

END LOOP

END;

Page 14: [Praktikum SBD] Bab 5 Oracle 1 Fixx

PL/SQL perulangan tersebut adalah untuk menampilkan suatu nilai

tertentu berulang kali selama kondisi yang ditentukan masih

terpenuhi.Dalam PL/SQL di atas, kondisi yang dilihat adalah apakah

variabel BIL_1masih kurang dari 5. Jika kondisi ini masih terpenuhi

(bernilai true), perintah untuk menampilkan ‘BILANGAN KE-<BIL_1>,

ADALAH BIL_2’ dilakukan, BIL_1 dan BIL_2adalah bilangan yang

ditentukan di awal dan mengalami iterasi sesuai penulisan kode.

Gambar 5.96Fungsi PL/SQL WHILE

Untuk perintah FOR dituliskan melalui contoh sebagai berikut.

SET SERVEROUTPUT ON

DECLARE

BIL_1 INTEGER;

BIL_2 INTEGER;

BEGIN

BIL_2 := 10;

WHILE BIL_1 IN 1..5 LOOP

BIL_2 := BIL_2 + 10;

DBMS_OUT_PUT.PUT_LINE(‘bilangan ke-’|| BIL_1 ||

‘, adalah ’|| BIL_2);

END LOOP

END;

Page 15: [Praktikum SBD] Bab 5 Oracle 1 Fixx

PL/SQL perulangan tersebut adalah untuk menampilkan suatu nilai

tertentu berulang kali selama kondisi yang telah ditentukan batas awal dan

akhirnya.Dalam PL/SQL di atas, kondisi yang dilihat adalah apakah

variabel BIL_1 masih berada di antara 1 sampai 5. Jika kondisi ini masih

terpenuhi (bernilai true), perintah untuk menampilkan ‘bilangan ke-

<BIL_1>, adalah BIL_2’ dilakukan, BIL_2 adalah bilangan yang

ditentukan di awal dan mengalami iterasi sesuai penulisan kode,

sedangkan BIL_1 ditentukan melalui kondisi yang ditentukan dalam

perulangan FOR.

Gambar 5.17 Fungsi PL/SQL FOR

5.3.4. PL/SQL penggunaan PL/SQL dalam manipulasi tabel database

PL/SQL pengkondisian dan perulangan akan digunakan bersama

query SQL untuk memanipulasi elemen database.Dalam percobaan ini

akan dillakukan perintah untuk memasukkan data beberapa baris sekaligus

menggunakan PL/SQL perintah perulangan dan query Insert.

Buat tabel baru mahasiswa dengan kolom nomor bertipe number dan

kolom nama minuman bertipe varchar2(14).

Page 16: [Praktikum SBD] Bab 5 Oracle 1 Fixx

create table kantin(nomor NUMBER, nama_minuman

VARCHAR2(100));

Eksekusi perintah di atas,refresh tabel sehingga tabel yang baru saja

dibuat dapat muncul.

Gambar 5.18 Fungsi PL/SQL create table

Pada lembar kerja SQL, masukkan perintah sebagai berikut.

SET SERVEROUTPUT ON

DECLARE

a1:=&dari;

a2:= &sampai;

BEGIN

a1 := &a1;

a2 := &a2;

WHILE a1 <=a2 LOOP

INSERT INTO kantin (nomor, nama_minuman)

VALUES (a1, ‘minuman’||a1);

a1 := a1 + 1;

END LOOP;

END;

Page 17: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Dalam PL/SQL tersebut didefinisikan variabel bertipe number N1

dan N2 yang digunakan sebagai batas bawah dan akhir nilai data yang

dimasukkan.Nilai ini bisa dimasukkan sendiri oleh user (&N1 dan

&N2).Selanjutnya selama nilai N1 kurang dari N2 yang dimasukkan,

query insertakan terus dilakukan sampai kondisi perulangan telah selesai

dilakukan.Dengan demikian, kita dapat memasukkan beberapa data

sekaligus secara berurutan melalui perulangan PL/SQL.

Gambar 5.19 Fungsi PL/SQL Insert menggunakan WHILE

Untuk melihat data pada tabel, klik pada nama tabel yang dipilih,

pilih data.

Page 18: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.100 Hasil fungsi Insert menggunakan WHILE

Simpan lembar kerja query SQL yang telah kita buat sebelumnya.

Query ini kemudian dapat kita panggil kembail di lembar kerja baru cukup

dengan menuliskan nama file query sesuai dengan yang kita simpan.

Gambar 5.21 Memanggil fungsi yang sudah disimpan di lembar kerja lain

Page 19: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Hasil data yang dimasukkan ke tabel dapat kita lihat bertambah dari

data yang sebelumnya telah kita masukkan.

Gambar 5.22 Hasil fungsi PL/SQL yang dipanggil

Page 20: [Praktikum SBD] Bab 5 Oracle 1 Fixx

5.4. Tugas Praktikum

Dalam percobaan ini akan dillakukan perintah untuk menghapus beberapa

baris data sekaligus menggunakan PL/SQL perintah perulangan dan query Delete.

Buat tabel baru penjualan dengan kolom nomor bertipe number(4) dan

nama_minumanvarchar2(100):

create table kantin(nomor NUMBER, nama_minuman VARCHAR2(100));

Eksekusi perintah di atas, refresh tabel sehingga tabel yang baru saja dibuat

dapat muncul.

Gambar 5.23 Membuat tabel kantin

Masukkan beberapa sampel data yang dapat kita hapus nantinya melalui

kode PL/SQL Delete.

Page 21: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.24 Memasukkan baris data ke dalam table

Gambar 5.25 Dari dan sampai

Untuk melihat data pada tabel, klik pada nama tabel yang dipilih, pilih data.

Gambar 5.26 Data setelah dimasukkan dalam tabel

Page 22: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Pada lembar kerja SQL, masukkan perintah sebagai berikut.

Declare

C1 NUMBER;

C2 NUMBER;

Begin

C1:= &deldari;

C2:= &delsampai;

While c1<=c2 loop

Delete from kantin where nomor=c1;

C1:= c1+1

End loop;

End;

Dalam PL/SQL tersebut didefinisikan variabel bertipe number c1

dan c2 yang digunakan sebagai batas bawah dan akhir nilai data yang akan

dihapus. Nilai ini bisa dimasukkan sendiri oleh user (&data_awal dan

&data_akhir).Selanjutnya selama nilai c1 kurang dari c2 yang dimasukkan,

query deleteakan terus dilakukan sampai kondisi perulangan telah selesai

dilakukan.Dengan demikian, kita dapat menghapus beberapa data

sekaligus secara berurutan melalui perulangan PL/SQL.

Gambar 5.27 PL/SQL fungsi Deletemultiple rows

Page 23: [Praktikum SBD] Bab 5 Oracle 1 Fixx

Gambar 5.28 Dari dan Sampai

Hasil data yang dimasukkan ke tabel dapat kita lihat berkurang dari

data yang sebelumnya telah kita masukkan sesuai batas awal dan akhir

penghapusan data yang dilakukan terhadap tabel.

Gambar 5.29 Hasil Delete multiple rows menggunakan PL/SQL

Page 24: [Praktikum SBD] Bab 5 Oracle 1 Fixx

5.5. Kesimpulan

1. PL/SQL mendukung pemrograman SQL secara prosedural. PL merupakan

kependekan dari Procedural Language. PL/SQL mengkombinasikan kekuatan

dan kefleksibilitasan SQL dengan pemrograman prosedural.

2. Bagian deklarasi variabel di antara kata kunci DECLARE dan BEGIN.

Penamaan variabel tidak bersifat case sensitive. Tipe data variabel dapat

berupa salah satu tipe data database Oracle atau tipe data built in PL/SQL.

3. Rangkaian perintah-perintah IF-THENdieksekusi hanya jika kondisi adalah

true. Jika kondisi bernilai false atau null, perintah IF tidak melakukan apa-apa.

4. Rangkaian perintah-perintah IF-THEN-ELSE mengeksekusi pernyataan dalam

fungsi IFjika bernilai true, klausa ELSE dieksekusi hanya jika kondisi bernilai

false atau null.

5. Dalam perulangan WHILE-LOOP, sebelum setiap perulangan dari loop,

kondisi dievaluasi. Jika kondisi true, rangkaian perintah-perintah dieksekusi,

kemudian kontrol kembali ke awal loop. Jika kondisi false atau null, loop

diabaikan dan kontrol menuju ke perintah selanjutnya.

6. Dalam perulangan FOR-LOOP, jumlah perulangan melalui loop FOR telah

diketahui sebelum loop dijalankan. Loop-loop FOR berulang sejumlah

jangkauan integer tertentu. Jangkauan ini adalah bagian dari iteration scheme,

yang diapit oleh kata-kata kunci FOR dan LOOP.