Upload
lamdien
View
230
Download
0
Embed Size (px)
Citation preview
Pemrograman Database II 2015
BAB IXPROSEDUR DAN FUNGSI
9.1. PROSEDUR
Prosedur adalah suatu blok PL/SQL yang menyimpan sekumpulan perintah yang tidak disertai dengan pemberian nilai. Dengan Kata lain prosedur hanya melakukan perintah tertentu saja.
9.1.1. Membuat Prosedur
Berikut bentuk umum yang digunakan untuk membuat procedure
Contoh
Kalau dijalankan maka output yang dihasilkan
54 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
CREATE [OR REPLACE] PROCEDURE nama_procedure (parameter_1 tipe_data, parameter_2 tipe_data,…) ISvariabel-varibel lokalBEGIN Statmen;END;
create or replace procedure cari_nama_karyawan is vnamakaryawan employees.last_name%TYPE;begin select last_name into vnamakaryawan from employees where employee_id= 150 ; dbms_output.put_line('Nama nya adalah :'||vnamakaryawan);end;
Pemrograman Database II 2015
9.1.2. Eksekusi Prosedur
Perintah berikut digunakan untuk mengeksekusi procedure yang telah dibuat.
Contoh
Berikut hasilnya :
9.2. FUNGSI
Fungsi adalah sebuah blok PL/SQL yang dapat mengembalikan nilai. Untuk memngembalikan nilai kepada fungsi kita gunakan statmen RETURN.
55 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
EXEC[UTE] namaprosedur(daftar_paramter)
Exec cari_nama_karyawan;
Pemrograman Database II 2015
9.2.1. Membuat Fungsi
Berikut bentuk umum perintah untuk membuat fungsi
Contoh
Jika perintah di jalankan maka outputnya adalah
9.2.2. Pemanggilan Fungsi
Fungsi yang telah dibuat dapat dipanggil dengan cara seperti contoh berikut ini :
56 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
CREATE OR REPLACE FUNCTION nama_function(parameter_1 tipe_date, parameter_2 tipe_data,…)RETURN tipedata_function ISVariabel-variabel localBEGIN Statement; ….. RETURN nilai_function;END;
create or replace function cari_namakaryawanreturn employees.last_name%TYPE IS vnamakaryawan employees.last_name%TYPE;begin select last_name into vnamakaryawan from employees where employee_id = 125 ; return vnamakaryawan;end;
declare nama employees.last_name%TYPE;begin nama:=cari_namakaryawan; dbms_output.put_line(nama);end;
Pemrograman Database II 2015
Hasil yang diperoleh dapat dilihat pada gmbar berikut ini :
Atau melalui statemen SQL Berikut.
9.3. PARAMETER
Paramater yaitu nilai yang dilewatkan dalam sebuah prosedur ataupun fungsi.
9.3.1. Parameter Masukan
Parameter masukan yaitu paramater yang berguna untuk menyimpan nilai yang digunakan sebagai input(masukan) didalam badan prosedur maupun fungsi. Contoh parameter pada prosedur
57 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
select cari_namasuplier from dual;
create or replace procedure cari_nama_karyawan (nik employees.employee_id%type) is vnamakaryawan employees.last_name%TYPE;begin select last_name into vnamakaryawan from employees where employee_id= nik ; dbms_output.put_line('Nama nya adalah :'||vnamakaryawan); dbms_output.put_line('NIK nya adalah :'||nik);end;
Pemrograman Database II 2015
Setelah procedure di atas kita jalankan, selanjutnya kita dapat melakukan pemanggilan fungsi dengan parameter yang berbeda-beda.
Contoh
Setelah dijalankan maka akan menghasilkan output:
58 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
exec cari_nama_karyawan(100);
Pemrograman Database II 2015
Contoh Paramater pada fungsi
Panggil fungsi dengan perintah berikut
Hasil dari eksekusi perintah tersebut adalah sebagai berikut :
59 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
create or replace function cari_namakaryawan(nik integer)return employees.last_name%TYPE IS vnamakaryawan employees.last_name%TYPE;begin select last_name into vnamakaryawan from employees where employee_id=nik; return vnamakaryawan;end;
set serveroutput on;declare nama employees.last_name%TYPE;begin nama:=cari_namakaryawan(100); dbms_output.put_line('Nama Karyawan yang dicari adalah ' || nama);end;
Pemrograman Database II 2015
9.3.2. Parameter Keluaran
Parameter keluar berperan sebagai parameter yang menampung nilai hasil dari proses yang dilakukan didalam sub program.
Contoh Parameter keluaran
Hasil dari eksekusi perintah tersebut adalah :
Sekarang tuliskan perintah suatu blok PL/SQL menggunakan prosedur tersebut.
Hasil yang diperoleh adalah sebagai berikut :
60 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
create or replace procedure cari_nama_karyawan(nik integer, vnamakaryawan out employees.last_name%TYPE) isbegin select last_name into vnamakaryawan from employees where employee_id = nik;end;
declare nama employees.last_name%TYPE;begin --memanggil prosedur cari_nama_karyawan(100,nama); -- menampilkan nilai yang ada dalam variabel dbms_output.put_line('karyawan yg dicari adalah '||nama);end;
Pemrograman Database II 2015
9.3.3. Parameter Masukan–Keluaran
Parameter ini merupakan gabungan dari parameter masukan dan parameter keluaran.
Contoh
Hasil dari eksekusi perintah diatas sebagai berikut :
61 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
create or replace procedure cari_nama_karyawan(vparam in out char) is vhasil employees.last_name%TYPE;begin select last_name into vhasil from employees where employee_id=vparam; vparam:=vhasil;end;
Pemrograman Database II 2015
Untuk mencoba prosedur di atas kita dapat membuat Blok PL/SQL berikut:
Hasilnya sebagai berikut :
62 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
declare vlocal varchar2(20):=100;begin dbms_output.put_line('Nilai vlocal sebelum pemanggilan' ||'Prosedur :'||vlocal); cari_nama_karyawan(vlocal); dbms_output.put_line('Nilai vlocal setelah pemanggilan' ||'Prosedur :'||vlocal);end;
Pemrograman Database II 2015
9.4. PROSEDUR DAN FUNGSI LOKAL Merupakan procedure atau fungsi yg digunakan secara lokal dan ditempatkan didalam pernyataan declare
Contoh
set serveroutput on
declare kode integer; procedure datakaryawan(nik in integer) is nama varchar2(30); begin select last_name into nama from employees where employee_id=nik; dbms_output.put_line('Karyawan dgn No. '||nik||' adalah '||nama); end;begin kode:=&nik; datakaryawan(kode);end;
63 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
Pemrograman Database II 2015
64 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
set serveroutput on
declare kode integer; function jumlahkaryawan(dep_id in integer) return integer is hasil integer; begin select count(*) into hasil from employees where department_id=dep_id; return hasil; end;begin kode:=&dep_id; dbms_output.put_line('Total Jumlah karyawan di department '||kode|| ' adalah '|| to_char(jumlahkaryawan(kode)));end;
Pemrograman Database II 2015
9.5. OVERLOAD PROSEDUR DAN FUNGSI
Secara umum setiap objek didalam Oracle adalah unik, jadi kita tidak dapat melakukan overload terhadap prosedur dan fungsi. Tapi Kita diperbolehkan melakukan overload terhadap prosedur dan fungsi lokal.
65 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
set serveroutput ondeclarenik integer; nama varchar2(30); gaji number(8); --prosedur dengan parameter bertipe char procedure garis(s in char)is begin dbms_output.put_line(rpad(s,80,s)); end;--prosedur dengan parameter bertipe char procedure cetak(kata in varchar2)is begin dbms_output.put_line(kata); end;
begin
Pemrograman Database II 2015
66 Mulyadi, S.Kom, M.S.I / STIKOM Dinamika Bangsa
set serveroutput ondeclarenik integer; nama varchar2(30); gaji number(8); --prosedur dengan parameter bertipe char procedure garis(s in char)is begin dbms_output.put_line(rpad(s,80,s)); end;--prosedur dengan parameter bertipe char procedure cetak(kata in varchar2)is begin dbms_output.put_line(kata); end;
begin