Rabu, 14 Desember 2011

Fuction

FUNCTION

Function atau fungsi adalah blok PL/SQL yang dapat mengembalikan nilai. Maka dari itu dalam pembuatannya juga harus menggunakan statemen RETURN untuk proses pengembalian nilai. berbeda dengan procedure atau prosedur yang diaktivasi oleh statemen EXECUTE.

Berikut adalah bentuk umum untuk membuat sebuah function :
CREATE OR REPLACE FUNCTION nama_function
(parameter_1 tipedata, parameter_2 tipedata, .......)
RETURN tipedata_function IS
variable-variable _lokal
BEGIN
statemen;
...
RETURN nilai_function;
END;

Sebagai contoh, di sini akan membuat sebuah fungsi yang dapat mengembalikan sebuah nama suplier yang memiliki kode "EJ-01".
create or replace function cari_NamaSuplier
return supplier.nama_suplier%TYPE is
vNamaSuplier suplier.nama_suplier%TYPE;
begin

select nama_suplier into vNamaSuplier from suplier
where kode_suplier = 'EJ-01';

return vNamaSuplier;
end;


Penjelasan :

a. create or replace function

Statemen CREATE digunakan untuk membuat function dan REPLACE digunakan untuk mengganti isi dari function jika nama function sudah ada dalam database.

b. return supplier.nama_suplier%TYPE is vNamaSuplier suplier.nama_suplier%TYPE

Artinya mendeklarasikan sebuah variabel yang bernama vNamasuplier dan %TYPE menunjukkan bahawa tipe data sama dengan kolom nama_suplier yang ada pada tabel suplier

c. select nama_suplier into vNamaSuplier from suplier where kode_suplier = 'EJ-01'

Ini adalah blok PL/SQL yang digunakan untuk menampilkan nama suplier dari tabel suplier yang berkode 'EJ-01'. Selanjutnya nama tersebut disimpan ke variabel vNamasuplier.

d. return vNamaSuplier;

Ini adalah nilai baliknya pada variabel vNamaSuplier.



Pemanggilan Fungsi

Pada fungsi kita dapat langsung memasukkan nilai ke dalam suatu variabel yang sama tipenya. Perhatikan contoh berikut ini :
SQL>declare
1 nama suplier.nama_suplier%TYPE;
2 begin
3 --memasukkan nilai yang dikembalikan fungsi kedalam variabel nama
4 nama := cari_NamaSuplier%TYPE;
5 dbms_output.put_line(nama);
6 end;
7 /
PT. ACTRON

PL/SQL procedure succesfully completed.

SQL>

Tidak ada komentar:

Posting Komentar