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
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.


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.