Modul 13 User Defined Function
Modul 13 User Defined Function
1. 2. 3. 4.
Definisi User Defined Function Pembuatan User Defined Function Scalar Function Table Function
MODUL
User Defined Function (UDF) merupakan salah satu objek database yang memetakan kumpulan input data menjadi kumpulan output data. Contohnya adalah sebuah fungsi yang merubah ukuran input dalam inchi menjadi output ukuran sentimeter. DB2 support 3 tipe UDF yaitu SQL UDF, External UDF dan Sourced UDF. Namun yang akan dibahas dalam modul ini hanya SQL UDF yaitu UDF berdasarkan bahasa SQL. Berdasarkan result set yang dihasilkan oleh UDF, dikelompokkan menjadi 2 yaitu scalar UDF dan table UDF. dapat
13
Brawijaya University
2012
B. MODIFYING UDF
Dalam bahasa SQL DB2 tidak ada perintah ALTER untuk memodifikasi sebuah UDF. Ketika perlu melakukan perubahan fungsi yang telah ada maka fungsi tersebut harus di drop dulu dan di create ulang.
Page 2 of 6
Brawijaya University
2012
Jika terdapat 2 fungsi yang memiliki nama yang sama tetapi dengan parameter berbeda (disebut function overloading) maka cara penghapusannya berdasarkan nama fungsi dan parameternya. Contohnya sebagai berikut : DROP FUNCTION function1(int);
3. Scalar Function
Fungsi scalar mengembalikan nilai tunggal (single value). Fungsi scalar tidak bisa menggunakan query yang dapat merubah kondisi database, seperti query INSERT, UPDATE dan DELETE. Contoh fungsi scalar yang telah built-in adalah SUM(), AVG(), DIGITS(), COALESCE(), dan SUBSTR(). Ada 2 cara memanggil Fungsi Scalar. Cara pertama adalah dengan menggunakan fungsi tersebut dalam perintah SELECT. Cara kedua adalah dengan menggunakan VALUES. Berikut ini ditunjukkan contoh pemanggilan fungsi scalar. SELECT PROJNO, PROJNAME, DEPTNO, RESPEMP, COALESCE(MAJPROJ, 'tidak ada') FROM DB2ADMIN.PROJECT; VALUES projname('AD3100'); Contoh kasus penggunaan UDF dalam database sample schema. Cristine Haas ingin mengetahui jumlah pegawai yang terlibat dalam sebuah project. Ia ingin ketika input nama project menghasilkan keluaran banyaknya pegawai yang menangani project tersebut. Maka untuk memudahkan business logic yang akan diakses Cristine Haas dibuatkan sebuah UDF. (menggunakan IBM Data Studio) CREATE FUNCTION jmlpeg_proj (namaproject varchar(24)) RETURNS INTEGER NO EXTERNAL ACTION F1: BEGIN ATOMIC RETURN SELECT COUNT(e.empno) from empprojact e join project p on (p.projno = e.projno) where p.projname = upper(namaproject); END; VALUES jmlpeg_proj('account programming');
Page 3 of 6
Brawijaya University
2012
4. Table Function
User defined table function (UDTF) atau table UDF adalah fungsi yang mengembalikan sejumlah baris dalam sebuah tabel (temporary table). Fungsi ini dapat dipanggil menggunakan clausa FROM dalam query. Fungsi tabel bisa menggunakan query yang dapat merubah kondisi database, seperti query INSERT, UPDATE dan DELETE. Contoh fungsi tabel yang telah built-in adalah SNAPSHOT_DYN_SQL() dan MQREADALL(). Cara pemanggilan atau penggunaan table UDF ditunjukkan sebagai berikut :
Brawijaya University
2012
Contoh kasus penggunaan UDTF dalam database sample schema. Seorang web programmer membutuhkan fungsi tabel untuk menampilkan data pegawai-pegawai (no pegawai, nama pegawai [lastname digabung firstname], total pendapatan, workdept ) yang bekerja pada departemen tertentu (nama departemen sesuai input pilihan user). Untuk memenuhi kebutuhan web programmer dibuatlah fungsi tabel kasus1. (menggunakan IBM Data Studio) CREATE FUNCTION kasus1 (namadept varchar(36)) RETURNS TABLE(empno char(6) , nama varchar(28), pendapatan decimal(9) , workdept char(3)) NO EXTERNAL ACTION F1: BEGIN ATOMIC RETURN SELECT e.empno, e.lastname || ' ' || e.firstnme as nama, (e.salary+e.bonus+e.comm) as pendapatan , e.workdept FROM employee e join department d on (e.workdept=d.deptno) WHERE d.deptname = UPPER(namadept); END@ SELECT * FROM TABLE(kasus1('information center'))@
Brawijaya University
2012
REFERENSI
IBM, 2009. DB2 Stored ProceduresProgramming Workshop Student Notebook, IBM Training Course code CL711 Bedoya, Hernando and friends, 2006. Stored Procedures, Triggers, and User-Defined Functions on DB2 Universal Database for iSeries. Ibm.com/redbooks. Situs IBM, diakses pada tanggal 2 Juli 2012 http://publib.boulder.ibm.com
PROPAGASI
Pertanyaan (Evaluasi mandiri) 1. Mengapa diperlukan UDF dalam pemanfaatan database? 2. Apa perbedaan Scalar UDF dan Table UDF ?
Page 6 of 6