16
Pemrograman Database II 201 5 BAB IX PROSEDUR 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,…) IS variabel-varibel lokal BEGIN Statmen; 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 :'||

Pemrograman Database II - mulyadinirwan.files.wordpress.com file · Web viewcreate or replace procedure cari_nama_karyawan is vnamakaryawan employees.last_name%TYPE;begin select last_name

  • Upload
    lamdien

  • View
    228

  • 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