[Praktikum SBD] Bab 5 Oracle 1 Fixx
Transcript of [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.
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
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
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.
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.
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.
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.
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.
Gambar 5.10Proses instalasi selesai
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.
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.
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
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;
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;
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).
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;
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.
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
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
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.
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
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
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
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.