Procedure

Procedure

Procedure adalah subprogram yang digunakan untuk melakukan proses tertentu. Procedure bisa disimpan dalam database sebagai object schema, sehingga suatu procedure bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang. Procedure yang disimpan di database biasa disebut stored procedure.

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter1 [mode1] datatype1,
parameter2 [mode1] datatype2,   . . .)]
IS | AS
PL/SQL block;

Privilege yang dibutuhkan CREATE PROCEDURE atau CREATE ANY PROCEDURE

Contoh procedure sederhana :

SQL> CREATE  OR REPLACE PROCEDURE cetak_kata
2  AS
3  BEGIN
4     DBMS_OUTPUT.PUT_LINE('Belajar PL-SQL Programming');
5  END;
6  / Procedure created.

Eksekusi procedure dari SQL*Plus:

SQL> SET SERVEROUTPUT ON
SQL> EXECUTE cetak_kata;
Belajar PL-SQL Programming
PL/SQL procedure successfully completed.

Eksekusi procedure dari PL/SQL Block atau procedure lain :

SQL> BEGIN
2    cetak_kata;
3  END;
4  /
Belajar PL-SQL Programming
PL/SQL procedure successfully completed.

Procedure bisa mempunyai parameter yang bisa digunakan untuk mengirim nilai ke dalam prosesure dan menampung hasil proses dari procedure.
Ada tiga mode parameter untuk stored procedure yaitu :

IN : mengirim nilai (angka,variable, ekspresi)
OUT : menampung hasil dari proses procedure (variabel)
IN OUT : mengirim nilai dan menampung hasil proses (variabel)

Untuk demo pemakaian procedure dan parameter, dibuat tabel barang sebagai berikut :

SQL> CREATE TABLE BARANG
2  (KODE   VARCHAR2(3) PRIMARY KEY,
3   NAMA_BRG VARCHAR2(30));
Table created.
-------------------------------------
KODE		| NAMA_BRG
-------------------------------------
100		| ROKOK
101		| PERMEN
-------------------------------------

Parameter IN
Mode default, jika tidak disebutkan maka paramater procedure merupakan parameter IN.

SQL> CREATE OR REPLACE PROCEDURE ISI_BARANG
2  (P_KODE VARCHAR2, P_NAMA IN VARCHAR2)
3  AS
4
5  BEGIN
6   INSERT INTO BARANG VALUES(P_KODE,P_NAMA);
7   COMMIT;
8  END;
9  /
Procedure created.

Parameter P_KODE dan P_NAMA merupakan parameter IN.

Eksekusi procedure

SQL> EXECUTE ISI_BARANG(100,'ROKOK');
PL/SQL procedure successfully completed.
SQL> EXECUTE ISI_BARANG(101,'PERMEN');
PL/SQL procedure successfully completed.

Parameter OUT
Digunakan untuk menampung hasil proses procedure. ditandai dengan OUT setelah nama parameter.

CREATE OR REPLACE PROCEDURE CARI_BARANG
(P_KODE IN VARCHAR2, P_NAMA OUT VARCHAR2)
AS
   V_NAMA_BRG  VARCHAR2(30);
BEGIN
   SELECT NAMA_BRG INTO V_NAMA_BRG
   FROM BARANG
   WHERE KODE=P_KODE;
   P_NAMA := V_NAMA_BRG;
END;

Buat environment variable atau bind variable untuk menampung hasil procedure

SQL> VARIABLE gnama varchar2(30);
SQL> SET AUTOPRINT ON
SQL> EXECUTE cari_barang(100,:gnama);
PL/SQL procedure successfully completed.
GNAMA
--------------------------------
ROKOK

Parameter IN OUT

Parameter yang digunakan untuk mengirim nilai dan menampung hasil procedure, ditandai dengan IN OUT setelah nama parameter.

SQL> CREATE OR REPLACE PROCEDURE format_phone
2  (phone_no IN OUT VARCHAR2) IS
3  BEGIN
4  phone_no := '(' || SUBSTR(phone_no,1,3) ||
5  ')' || SUBSTR(phone_no,4,3) ||
6  '-' || SUBSTR(phone_no,7);
7  END format_phone;
8  /
Procedure created.

Buat environment variable atau bind variable untuk mengirim dan menampung hasil procedure

SQL> VARIABLE G_PHONE VARCHAR2(12);
SQL> BEGIN
2   :G_PHONE := '636296532';
3  END;
4  /
PL/SQL procedure successfully completed.
G_PHONE
--------------------------------
636296532

diatas adalah nilai yang akan dikirim melalui G_PHONE

Eksekusi procedure

SQL> EXECUTE format_phone(:G_PHONE);
PL/SQL procedure successfully completed.
G_PHONE
--------------------------------
(636)296-532

isi G_PHONE sudah berubah sesuai format

Masuk : 636296532 Keluar: (636)296-532

Demikian bahasan tentang Procedure

Terimakasih
Bambang Sutejo

Tags: , ,

This entry was posted on Saturday, February 21st, 2009 at 8:47 am and is filed under 3. PL/SQL. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Responses to “Procedure”

muhamad Akbar Bin Widayat November 28th, 2009 at 11:39 am

terimakasih atas infonya…

salam kenal…

fani March 26th, 2010 at 10:52 am

mas, mohon info gmn cara membuat store procedure untuk menghapus data dalam suatu tabel (ex : tabel karyawan, primary key kd_karyawan).
makasih atas bantuannya.

Leave a Reply