Sebagaimana prosedur dalam bahasa pemrograman lain, kitapun bisa memasukkan variabel ke dalam prosedur. Lihat contoh prosedur PROC_REFRESH_MYTAB yang lalu
create or replace procedure PROC_REFRESH_MYTAB as V_rcg_min NUMBER; v_rcg_max number; V_iterasi NUMBER; v_date DATE; BEGIN V_rcg_min := 10; v_rcg_max := 100; V_iterasi := V_rcg_min; V_DATE := sysdate; EXECUTE IMMEDIATE 'truncate table MYTAB'; WHILE V_iterasi <= v_rcg_max LOOP insert into MYTAB values (v_date, V_iterasi); commit; v_date := v_date+1; V_iterasi:= V_iterasi+1; END LOOP; END; /
Dalam contoh di atas, nilai v_rcg_min dan v_rcg_max dimasukkan dalam hard code. Kalau kita mau mengubah nilai rcg_id minimum dan maksimum, ya mesti mengubah code lagi. Cappe deh …
Caranya, devinisikan variabel-variabel tersebut di belakang NAMA_PROSEDUR. Nilainya nanti dimasukkan ketika memanggil prosedur. Berikut ini prosedur tersebut:
create or replace procedure PROC_REFRESH_MYTAB2 (V_rcg_min NUMBER, v_rcg_max number) as V_iterasi NUMBER; v_date DATE; BEGIN V_iterasi := V_rcg_min; V_DATE := sysdate; EXECUTE IMMEDIATE 'truncate table MYTAB'; WHILE V_iterasi <= v_rcg_max LOOP insert into MYTAB values (v_date, V_iterasi); commit; v_date := v_date+1; V_iterasi:= V_iterasi+1; END LOOP; END; /
Berikut ini cara memanggil prosedur sekaligus memasukkan nilai untuk variabelnya (misalkan v_rcg_min saya beri nilai 20 dan v_rcg_max saya beri nilai 30):
- Di SQLPlus
SQL> exec PROC_REFRESH_MYTAB2 (20,30); - Di block PL/SQL, tulis saja nama prosedur tersebut
DECLARE
BEGIN
PROC_REFRESH_MYTAB2 (20,30);
END;
/
Kalau nilai variabel tidak dimasukkan, terlalu banyak, atau terlalu sedikit; maka akan error:
SQL> exec PROC_REFRESH_MYTAB2 (20);
SQL> exec PROC_REFRESH_MYTAB2 (20, 30, 40);
SQL> exec PROC_REFRESH_MYTAB2;
ERROR at line 1: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'PROC_REFRESH_MYTAB2' ORA-06550: line 1, column 7: PL/SQL: Statement ignored

Post a Comment