Jumat, 06 Juni 2014

Procedure dalam PL /SQL

Procedure dalah sebuah blok PL/SQL yang dapat berdiri sendiri serta dikompilasi untuk selanjutnya masuk ke dalam skema database.Nama procedure yang dibuat kemudian menjadi objek dengan tipe procedure. Procedure akan dieksekusi pada saat pemanggilan setelah sebelumnya dibuat terlebih dahulu.

Bentuk umum :

CREATE OR REPLACE PROCEDURE
nama_procedure
(parameter_1 tipe_data, … ) AS
variabel_1 tipe_data;

BEGIN
statemen_1;

END;

CREATE digunakan untuk membuat procedure baru
REPLACE digunakan untuk mengganti isi procedure yang telah dibuat sebelumnya
Parameter dan variable/konstanta bersifat opsional
Bentuk umum perintah untuk mengeksekusi sebuah procedure :
EXECUTE nm_procedure(paremeter_1,…);

·         Procedure Tanpa Parameter.

SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE hitung_luas_segitiga AS
alas NUMBER(5);
tinggi NUMBER(5);
luas NUMBER(10);
BEGIN
alas := 3;
tinggi := 6;
luas := (alas * tinggi) / 2;
DBMS_OUTPUT.PUT_LINE(‘LUAS = ‘ || luas);
END;
/
…………………………………
EXECUTE hitung_luas_segitiga;

·         Procedure Dengan Parameter.

o   Dengan Parameter Masukan

CREATE OR REPLACE PROCEDURE
tambah_dua ( a IN INTEGER) AS
hasil INTEGER(5);
BEGIN
hasil := a + 2;
DBMS_OUTPUT.PUT_LINE (‘Hasil akhir = ‘ || hasil);
END;
/
………………………………
EXECUTE tambah_dua(4);

o   Dengan Parameter Keluaran

CREATE OR REPLACE PROCEDURE
tambah_10 ( bil IN INTEGER, X OUT INTEGER) AS
BEGIN
X := bil + 10;
END;
/

Atau

SET SERVEROUTPUT ON
DECLARE
hasil INTEGER;
BEGIN
tambah_10(5, hasil);
DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(hasil));
END;
/

o   Dengan Parameter Masukan /Keluaran

CREATE OR REPLACE PROCEDURE
tambah_10 ( X IN OUT INTEGER) AS
BEGIN
X := X + 10;
END;
/

Atau

SET SERVEROUTPUT ON
DECLARE
Y INTEGER;
BEGIN
Y := 15;
tambah_10(Y);
DBMS_OUTPUT.PUT_LINE(‘Hasilnya = ‘ || TO_CHAR(Y));
END;
/


·         Procedure Didalam Procedure.

CREATE OR REPLACE PROCEDURE cetak_angka(X IN INTEGER) AS
J INTEGER;
BEGIN
FOR J IN 1..X LOOP
DBMS_OUTPUT.PUT_LINE( TO_CHAR(J));
END LOOP;
END;
/

CREATE OR REPLACE PROCEDURE panggil_proc AS
BEGIN
cetak_angka(10);
END;
/
----------------------------
SET SERVEROUTPUT ON
EXECUTE panggil_proc

0 komentar:

Posting Komentar