Selasa, 10 Juli 2012

Function atau Fungsi Pada Oracle

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.
-- 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
sumber : http://www.klik-oracle.web.id/?p=12

1 komentar: