7.2 Callable Procedure & Function
7.2.3 Parameter
Parameter adalah nilai yang dilewatkan dalam sebuah prosedur atau fungsi. Ada tiga jenis parameter : parameter input, output, dan input-output.
7.2.3.1 Parameter Input
Parameter input berguna untuk menyimpan nilai yang akan digunakan sebagai input pada badan prosedur maupun fungsi. Parameter ini ditandai dengan mode IN, tapi bila mode ini dihilangkan maka secara otomatis akan dianggap sebagai parameter input juga.
Contoh
/*Prosedur pengecekan stok barang*/
CREATE OR REPLACE PROCEDURE prc_stok_brg (pi_brg VARCHAR2) IS
vstok INTEGER;
BEGIN
-- Mengambil nilai stok dari barang -- (nilai stok adalah bilangan positif)
SELECT stok_barang INTO vstok FROM barang WHERE UPPER(nama_barang) = UPPER(pi_brg);
--Memeriksa nilai dari variabel vstok
IF vstok = 0 THEN
--Jika vstok = 0, cetak keterangan ke layar
DBMS_OUTPUT.PUT_LINE(‘Persediaan barang telah
habis’);
END IF; END;
SQL> set serveroutput on;
7.2.3.2 Parameter Output
Parameter output berperan untuk menampung nilai hasil dari suatu proses yang dilakukan di dalam prosedur atau fungsi. Pada kenyataannya, parameter ini lebih sering ditemukan pada prosedur. Parameter output ditandai dengan mode OUT
Contoh
/*Prosedur pencarian nama supplier*/
CREATE OR REPLACE PROCEDURE cari_supp ( pi_kode IN VARCHAR2,
vNamaSupp OUT supplier.nama_supp%TYPE) IS
BEGIN
-- Mengambil nama supplier berdasar parameter
SELECT nama_supp INTO vNamaSupp FROM supplier WHERE UPPER(kode_supp) = UPPER(pi_kode);
END;
Contoh blok PL/SQL yang mengeksekusi prosedur di atas :
/*Blok yang mengeksekusi prosedur*/
DECLARE
nama supplier.nama_supp%TYPE;
BEGIN
-- Eksekusi prosedur
cari_supp(‘SU-10001’, nama);
-- Mencetak nilai variabel nama ke layar
DBMS_OUTPUT.PUT_LINE (nama);
7.2.3.3 Parameter Input-Output
Parameter ini merupakan gabungan dari kedua parameter sebelumnya. Mula-mula badan prosedur atau fungsi akan melakukan proses terhadap nilai input yang dikirimkan oleh parameter ini, kemudian nilai hasil dari proses tersebut akan dimasukkan kembali ke parameter ini.
Suatu parameter dikatakan sebagai paramter input-output bila dituliskan dalam mode IN OUT.
Contoh
/*Prosedur pencarian nama supplier*/
CREATE OR REPLACE PROCEDURE cari_supp ( vParam IN OUT VARCHAR2) IS
vHasil supplier.nama_supp%TYPE;
BEGIN
-- Mengambil nama supplier berdasar parameter
SELECT nama_supp INTO vHasil FROM supplier WHERE UPPER(kode_supp) = UPPER(vParam);
-- Memasukkan nilai hasil ke parameter
vParam := vHasil;
END;
Contoh blok PL/SQL yang mengeksekusi prosedur di atas :
/*Blok yang mengeksekusi prosedur*/
DECLARE
vLokal VARCHAR2 := ‘SU-10001’; BEGIN
-- Mencetak nilai parameter input
-- Mencetak nilai parameter output
DBMS_OUTPUT.PUT_LINE (vLokal);
Rangkuman
16. Index adalah objek database yang dapat dibuat untuk meningkatkan performansi dari query.
17. Index dapat dibuat dengan cara :
Otomatis : dibuat secara otomatis oleh server saat pembuatan tabel dengan primary key atau unique constraint.
Manual : dibuat secara manual dengan statemen CREATE INDEX.
CREATE INDEX [schema.]index
ON [schema.]tabel ({kolom [ASC|DSC]});
18. Manipulasi terhadap index : Mengganti nama index
ALTER INDEX [schema.]index RENAME TO index_baru;
Menghapus index
DROP INDEX [schema.]index;
19. Prosedur adalah blok PL/SQL yang menyimpan sekumpulan perintah tanpa disertai pengembalian nilai.
CREATE [OR REPLACE] PROCEDURE nama_prosedur
(parameter1 tipedata, parameter2 tipedata,...) IS variable_variabel_lokal tipedata; BEGIN statemen_statemen; ... END;
20. Fungsi adalah blok PL/SQL yang dapat mengembalikan nilai. Karena itu perlu ditambahkan statemen RETURN untuk proses pengembalian nilai.
CREATE [OR REPLACE] FUNCTION nama_fungsi
(parameter1 tipedata, parameter2 tipedata,...) RETURN tipe_data_fungsi IS variable_variabel_lokal tipedata; BEGIN statemen_statemen; ... RETURN nilai_fungsi; END;
21. Parameter adalah nilai yang dilewatkan dalam sebuah prosedur atau fungsi. Ada tiga jenis parameter : parameter input, output, dan input- output.
Parameter input : menyimpan nilai yang akan digunakan sebagai input pada badan prosedur maupun fungsi. Ditandai dengan mode IN. Parameter output : menampung nilai hasil dari suatu proses yang
dilakukan di dalam prosedur atau fungsi. Ditandai dengan mode OUT.
Parameter input-output : berfungsi sebagai parameter input maupun output. Ditandai dengan mode IN OUT.
Studi Kasus : Pembuatan Laporan
Pada studi ini, kasus inventory akan digunakan sebagai contoh dalam penerapan index, prosedur, maupun fungsi.
1. Buat 3 buah table dengan spesifikasi sebagai berikut :
o supplier
CREATE TABLE SUPPLIER (
SUPP_ID VARCHAR2(8) NOT NULL, SUPP_NAME VARCHAR2(50) NOT NULL, SUPP_ADDR VARCHAR2(120)
CONSTRAINT PK_SUPPLIER PRIMARY KEY(SUPP_ID) );
o barang
CREATE TABLE BARANG (
BRG_ID VARCHAR2(8) NOT NULL, BRG_NAME VARCHAR2(50) NOT NULL, BRG_STOK INTEGER DEFAULT 0,
CONSTRAINT PK_BARANG PRIMARY KEY(BRG_ID) );
o pasok
CREATE TABLE PASOK (
PAS_ID VARCHAR2(8) NOT NULL, PAS_DATE DATE DEFAULT SYSDATE, PAS_SUPP VARCHAR2(8),
PAS_BRG VARCHAR2(8),
PAS_AMT INTEGER DEFAULT 0,
CONSTRAINT FK_PASOK_BARANG FOREIGN KEY(PAS_BRG) REFERENCES BARANG(BRG_ID) );
2. Buatlah sebuah nonunique index untuk field PAS_DATE pada tabel PASOK.
3. Insert data pada ketiga tabel tersebut :
o supplier
SUPP_ID SUPP_NAME SUPP_ADDR
SP-10001 CV. KARYA Jl. Pembangunan, Jakarta SP-10002 PT. MAJU Jl. Diponegoro, Yogyakarta SP-10003 CV. MURAH Jl. Harapan, Bandung
... ... ...
(Bila perlu, tambahkan data lainnya).
o barang
BRG_ID BRG_NAME BRG_STOK
BR-10001 Lemari pakaian 15
BR-10002 Meja belajar 17
BR-10003 Kasur 23
... ... ...
(Bila perlu, tambahkan data lainnya).
o pasok
PAS_ID PAS_DATE PAS_SUPP PAS_BRG PAS_AMT
PS-10001 08/07/2008 SP-10001 BR-10001 5 PS-10002 08/07/2008 SP-10001 BR-10002 7 PS-10003 08/11/2008 SP-10002 BR-10003 12 PS-10004 08/12/2008 SP-10003 BR-10002 3 PS-10005 08/12/2008 SP-10003 BR-10003 10 ... ... ... ... ...
4. Buatlah sebuah fungsi untuk mengecek stok suatu jenis barang :
o Parameter input adalah id barang.
o Akan mengembalikan TRUE bila stok barang tidak nol, dan FALSE bila stok sama dengan nol.
5. Buatlah sebuah prosedur yang akan mencetak laporan pasok berdasar supplier tertentu :
o Parameter input adalah id supplier.
o Bentuk laporan :
Nama Supplier : _______________ Alamat : ____________________
____________________
Tgl Pasok Nama Barang Jumlah Pasok
o Contoh pemanggilan prosedur : EXEC nama_prosedur (‗SP-10001‘); 6. Buatlah sebuah prosedur yang akan mencetak laporan pasok berdasar
bulan dan tahun tertentu :
o Parameter input adalah bulan dan tahun pasok.
o Bentuk laporan :
Bulan : __________*
Tahun : __________
Nama Supplier Nama Barang Jumlah Pasok
o Contoh pemanggilan prosedur : EXEC nama_prosedur (‗08‘, ‗2008‘);
* Bulan ditampilkan dalam format Januari...Desember, untuk itu perlu ditambahkan fungsi pendukung untuk mengkonversi format
8 DATABASE-TRIGGER
Overview
Apabila kita menginginkan suatu aksi yang dapat memicu terjadinya aksi atau perubahan yang lain pada data yang kita miliki. Kita dapat menggunakan trigger. Trigger akan memicu sebuah aksi terjadi pada sebuah data atau memicu untuk membangkitkan trigger yang lain.
Tujuan
1. Mahasiswa Praktikan memahami trigger.
2. Mahasiswa mengerti fungsi dan kelebihan penggunaan trigger. 3. Mahasiswa mampu mengimplementasikan trigger