Function atau fungsi pada oracel
Function adalah jenis PL/SQL block yang menghasilkan satu nilai. Secara umum, function digunakan melakukan perhitungan, mengecek eksistensi dan kevalidan suatu data. Function bisa dilibatkan dalam expresi. Function bisa disimpan dalam database sebagai object schema, sehingga suatu function bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang.
CREATE [OR REPLACE] FUNCTION function_name [(parameter1 [mode1] datatype1, RETURN datatype IS | AS PL/SQL block;Parameter yang berlaku pada function hanya parameter IN.
Privilege yang dibutuhkan CREATE PROCEDURE atau CREATE ANY PROCEDURE
Untuk demo tentang function connect sebagai user SCOTT.
Gunakan tabel EMP, buat function yang mengembalikan SAL dari EMPNO yang dikirim.
-- periksa struktur tabel EMP SQL> DESC emp; Name Null? Type ----------------------- -------- ------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) CREATE OR REPLACE FUNCTION GET_SAL (P_EMPNO NUMBER) RETURN NUMBER AS V_SAL NUMBER(10); BEGIN SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO=P_EMPNO; -- Nilai yang dikeluarkan RETURN V_SAL; END; Berbagai cara menjalankan Function. – Menjalankan function sebagai parameter dari suatu procedure SQL> SET SERVEROUTPUT ON SQL> EXECUTE DBMS_OUTPUT.PUT_LINE(GET_GAJI(7369)); 800 – Menjalankan funtion sebagai bagian dari ekspresi SQL> SET AUTOPRINT ON SQL> VARIABLE G_HASIL NUMBER; SQL> EXECUTE :G_HASIL := GET_GAJI(7788); PL/SQL procedure successfully completed. G_HASIL ---------- 3000 – Menjalankan function pada perintah SELECT SQL> SELECT EMPNO,ENAME,GET_SAL(EMPNO) FROM EMP; NIP NAMA GET_SAL(EMPNO) ---------- ---------- ------------- 7369 SMITH 800 7499 ALLEN 1600 7521 WARD 1250 7566 JONES 2975 7654 MARTIN 1250 Contoh lain function CREATE OR REPLACE FUNCTION PAJAK(P_SAL NUMBER, PCT NUMBER) RETURN NUMBER AS BEGIN RETURN (P_SAL * (PCT/100)); END; /
SQL> SELECT EMPNO,ENAME,SAL,PAJAK(SAL,10) 2 FROM EMP; EMPNO ENAME SAL PAJAK(SAL,10) ---------- ---------- ---------- ------------- 7369 SMITH 800 80 7499 ALLEN 1600 160 7521 WARD 1250 125 7566 JONES 2975 297.5 7654 MARTIN 1250 125 7698 BLAKE 2850 285 7782 CLARK 2450 245 7788 SCOTT 3000 300 7839 KING 5000 500
Komentar
Posting Komentar