EVALUATION ADVANCE DATABASE: PL/SQL
NAME …
NIM 2457301000
CLASS 2 SI A
NO PC 01
1. PL/SQL PROCEDURE (20 point)
(1) Buatlah sebuah procedure dengan nama procedure_eva3_insertDataOrders yang
dapat digunakan untuk menginputkan data baru ke tabel Orders.
(2) Kemudian eksekusi/jalankan procedure tersebut untuk menginputkan data baru di
tabel Orders (data bebas).
(3) Terakhir, tampilkan isi tabel Orders untuk membuktikan bahwa procedure berhasil
dijalankan dan data baru berhasil masuk
Screenshot Query dan Hasil
(1) SS Query - Membuat Procedure
…
SS Hasil - Membuat Procedure
…
(2) SS Query - Menjalankan Procedure
…
SS Hasil - Menjalankan Procedure
…
(3) SS Query - Menampilkan Isi Tabel
…
SS Hasil - Menampilkan Isi Tabel Orders
…
2. PL/SQL FUNCTION (20 point)
(1) Buatlah sebuah function dengan nama function_eva3_grade. Function ini
membutuhkan 1 parameter nilai angka yang akan diubah ke nilai huruf. Terapkan
logika IF-ELSE untuk memeriksa nilai angka yang akan dikonversi/diubah ke nilai
huruf berdasarkan aturan nilai akademik PCR.
(2) Kemudian eksekusi/jalankan function tersebut dengan menginputkan nilai parameter
bebas/random. Pastikan hasilnya sudah sesuai dengan logika IF-ELSE nya
Screenshot Query dan Hasil
(1) SS Query - Membuat Function
…
SS Hasil - Membuat Function
…
(2) SS Query - Menjalankan Function
…
SS Hasil - Menjalankan Function
…
3. PL/SQL CURSOR
a. Implicit Cursor (10 Point)
Tabel Customer memiliki kolom outstanding_amt yang menunjukkan jumlah tagihan
pelanggan. Buatlah PL/SQL untuk:
● Melakukan UPDATE terhadap data customer dengan outstanding_amt < 6000
menjadi 0.
● Menggunakan atribut cursor bawaan: SQL%FOUND, SQL%NOTFOUND, dan
SQL%ROWCOUNT untuk menampilkan apakah ada baris yang terpengaruh dan
berapa jumlahnya.
Screenshot Query dan Hasil
SS Query - PL/SQL Implicit Cursor
…
SS Hasil - PL/SQL Implicit Cursor
…
b. Explicit Cursor (10 Point)
Tabel Customer memiliki kolom cust_name yang menunjukkan nama pelanggan.
Buatlah PL/SQL untuk:
● Buat cursor bernama c_customer yang mengambil daftar nama pelanggan dari
tabel customer.
● Lakukan proses OPEN → FETCH → EXIT WHEN → CLOSE.
● Tampilkan setiap nama pelanggan menggunakan dbms_output.
Screenshot Query dan Hasil
SS Query - PL/SQL Explicit Cursor
…
SS Hasil - PL/SQL Explicit Cursor
…
4. PL/SQL EXCEPTION (20 point)
Sebuah perusahaan ingin memvalidasi jumlah order_amount pada tabel orders agar
tidak melebihi batas 10.000.
(1) Anda diminta membuat blok PL/SQL yang melakukan hal berikut:
● Buat variabel ord_amt dengan nilai awal 12000.
● Jika nilai ord_amt > 10000, munculkan exception khusus bernama
ex_ord_amt dengan pesan “Order Amount Kelebihan Kapasitas”.
● Jika nilainya tidak melebihi batas, lakukan SELECT ke tabel ORDERS untuk
mengambil ord_amount, cust_code, dan agent_code berdasarkan nilai
ord_amt.
● Tampilkan hasil SELECT menggunakan dbms_output.
● Tangani juga exception NO_DATA_FOUND dan exception umum OTHERS.
(2) Coba ubah nilai awal ord_amt yang nilai awalnya 12000 menjadi 6000
Screenshot Query dan Hasil
(1) SS Query - PL/SQL Exception dengan nilai awal 12.000
…
SS Hasil - PL/SQL Exception dengan nilai awal 12.000
…
(2) SS Query - PL/SQL Exception dengan nilai awal 6.000
…
SS Hasil - PL/SQL Exception dengan nilai awal 6.000
…
5. PL/SQL TRIGGER (20 point)
Perusahaan ingin memastikan bahwa pelanggan baru tidak memiliki outstanding_amt
melebihi 10.000. Untuk itu, Anda perlu membuat trigger terhadap tabel CUSTOMER.
Instruksi Soal:
(1) Buat trigger bernama trigger_eva3_customers, dengan ketentuan sebagai berikut:
● yang berjalan AFTER INSERT FOR EACH ROW pada tabel CUSTOMER.
● Jika nilai :NEW.outstanding_amt > 10000 maka munculkan exception dengan
pesan “Utang Kelebihan Kapasitas”.
● Jika tidak, tampilkan informasi pelanggan baru: cust_name, cust_code, dan
outstanding_amt.
(2) Lakukan pengujian trigger dengan menginputkan data baru pada tabel customer
dengan nilai outstanding_amt berada di atas 10.000
(3) Lakukan juga pengujian trigger dengan menginputkan data baru pada tabel
customer dengan nilai outstanding_amt berada di bawah 10.000
Screenshot Query dan Hasil
(1) SS Query - Membuat Trigger
…
SS Hasil - Membuat Trigger
…
(2) SS Query - Menginputkan data baru di atas batas outstanding
…
SS Hasil - Menginputkan data baru di atas batas outstanding
…
(3) SS Query - Menginputkan data baru di bawah batas outstanding
…
SS Hasil - Menginputkan data baru di bawah batas outstanding
…