Procedure
Non Nested Procedure
Non
nested Procedure atau stored procedure merupakan sekumpulan blok
PL/SQL yang tersimpan di dalam skema database dan dapat dieksekusi
secara berulang kali jika user memiliki privilege untuk mengeksekusi
procedure tersebut. Nama procedure yang dibuat nantinya akan menjadi
objek dengan tipe procedure. Procedure akan dieksekusi pada saat
pemanggilan setelah sebelumnya dibuat terlebih dahulu.
Sintaks Pendeklarasian:
CREATE [OR REPLACE] PROCEDURE nama_procedure
[argumen1 tipe_data,
argumen2 tipe_data,...]
AS
[deklarasi variabel lokal]
BEGIN
badan_prosedur
EXCEPTION
END;
|
Keterangan
nama_procedure : nama dari procedure yang akan dibuat
argumen : parameter-parameter yang dipakai saat pemanggilan procedure
badan_prosedur : tempat blok PL/SQL yang memuat baris kode.
Contoh :
CREATE OR REPLACE PROCEDURE tambahMahasiswa
(
v_nim mahasiswa.nim%type;
v_nama mahasiswa.nama%type;
v_alamat departemen.lokasi%type
)
IS
BEGIN
insert into mahasiswa values(v_nim,v_nama,v_alamat);
END;
|
Setelah procedure dibuat, dijalankan dengan sintaks berikut.
EXECUTE
nama_procedure(parameter_1,parameter_2,...);
|
Contoh :
EXECUTE tambahMahasiswa
(‘30108002’,‘paimen’,‘sukapura’);
|
Untuk menghapus procedure yang telah kita buat, dapat menggunakan sintaks berikut
DROP PROCEDURE nama_procedure;
|
Contoh :
DROP PROCEDURE tambahMahasiswa;
|
Nested Procedure
Adalah
procedure yang dideklarasikan di dalam Declaration Section suatu blok
PL/SQL yang anonim. Karena dideklarasikan di dalam blok PL/SQL yang
anonim maka nested procedure tidak disimpan dalam basis data dan tidak
dapat dijalankan oleh blok lain kecuali dideklarasikan kembali oleh blok
tersebut.
Contoh :
DECLARE
PROCEDURE CETAK(kata varchar2, n number) IS
BEGIN
FOR i IN 1..n LOOP
DBMS_OUTPUT.PUT_LINE(to_char(i)||
’. ‘||kata);
END LOOP;
END CETAK;
BEGIN
CETAK(‘&v_kata’, &v_n);
END;
|
JENIS-JENIS PROCEDURE PADA ORACLE :
PROCEDURE TANPA PARAMETER/ARGUMEN
Procedure yang tidak memiliki parameter/argument biasanya bersifat statis (outputannya selalu sama) setiap kali dieksekusi.
Contoh:
CREATE OR REPLACE PROCEDURE lihat_mahasiswa
IS
vnama mahasiswa.nama%type;
BEGIN
SELECT nama INTO vnama FROM mahasiswa
WHERE nim = '30108002';
DBMS_OUTPUT.PUT_LINE('Nama mahasiswa dengan nim
30108002 adalah '||vnama);
END;
/
|
Hasil setelah dieksekusi adalah sbb,
SQL> EXECUTE lihat_mahasiswa;
Nama mahasiswa dengan nim 30108002 adalah paimen
Procedure lihat_mahasiswa di atas bersifat statis, dieksekusi kapanpun memiliki output yang sama.
- PROCEDURE DENGAN PARAMETER/ARGUMEN
Perbedaan
dengan procedure tanpa parameter yaitu procedure dengan parameter
memiliki output yang dinamis sesuai dengan nilai yang diberi pada
parameter procedure tersebut. Default argumen pada Oracle adalah IN.
Jenis-Jenis parameter/argumen dari Procedure adalah :
Parameter Masukan (Input)
Ditandai dengan atribut IN, dimana nilai dari parameter ini merupakan inputan untuk sebuah procedure.
Contoh:
CREATE OR REPLACE PROCEDURE lihat_mahasiswa
(vnim IN mahasiswa.nim%type)
IS
vnama mahasiswa.nama%type;
BEGIN
SELECT nama INTO vnama FROM mahasiswa
WHERE nim = vnim;
DBMS_OUTPUT.PUT_LINE('Nama mahasiswa dengan nim
'||vnim||' adalah '||vnama);
END;
/
|
- Parameter Keluaran (Output)
Ditandai dengan atribut OUT, dimana parameter ini merupakan variabel penampung untuk output sebuah procedure.
Contoh:
Procedure yang menggunakan parameter masukan dan juga parameter keluaran adalah sebagai berikut :
CREATE OR REPLACE PROCEDURE lihat_mahasiswa
(vnim IN mahasiswa.nim%type,
vnama OUT mahasiswa.nama%type)
IS
BEGIN
SELECT nama INTO vnama FROM mahasiswa
WHERE nim = vnim;
DBMS_OUTPUT.PUT_LINE('Nama mahasiswa dengan nim
'||vnim||' adalah '||vnama);
END;
/
|
Untuk mengeksekusi procedure lihat_mahasiswa :
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
vnama mahasiswa.nama%type;
BEGI
lihat_mahasiswa ('30108002',vnama);
DBMS_OUTPUT.PUT_LINE('Nama mahasiswa teladan bulan ini adalah '||vnama);
END;
/
Nama mahasiswa teladan bulan ini adalah paimen
Parameter Masukan/Keluaran (Input/Output)
Ditandai
atribut IN OUT, dimana parameter tersebut dianggap sebagai masukan
kemudian diproses dan ditampilkan kembali sebagai keluaran.
Contoh:
CREATE OR REPLACE PROCEDURE kuadrat
(x IN OUT number)
IS
BEGIN
x:=x*x;
END;
/
|
Untuk mengeksekusi procedure kuadrat :
SQL> SET VERIFY OFF;
SQL> DECLARE
2 bil number := '&input_angka';
3 n number;
4 BEGIN
5 n := bil;
6 kuadrat(bil);
7 DBMS_OUTPUT.PUT_LINE('kuadrat dari '||n||' adalah '||bil);
8 END;
9 /
Enter value for input_angka : 5
kuadrat dari 5 adalah 25
Tidak ada komentar:
Posting Komentar