Function
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.
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
– 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
0 komentar:
Posting Komentar