Selasa, 31 Desember 2013


 


 PACKAGE

Package merupakan suatu kumpulan subprogram seperti PROCEDURE dan FUNCTION. Dengan Package, Kita dapat menjalankan beberapa blok PL/SQL hanya dalam satu kali eksekusi.
Keuntungan Menggunakan PACKAGE :
  1. Modularity
  2. Memudahkan dalam hal Maintenance
  3. Memudahkan dalam hal design aplikasi
  4. Dapat Menyembunyikan Informasi, karena yang hanya ditampilkan dalam sebuah aplikasi hanya parent atau spesifikasinya saja, sedangkan body nya disembunyikan dan tidak dapat diakses.
  5. Added functionality
  6. Meningkatkan Performance
  7. Dapat menggunakan Overloading

Package terdiri dari 2 bagian :
  1. Bagian Spesifikasi atau Parent
  2. Bagian Body
     

    Gambar 1 Components of Package
         

    Contoh penulisan package adalah sbb:
    a.              Syntax Package Spesification:
    CREATE [OR REPLACE] PACKAGE package_name IS|AS
    public type and variable declarations
    subprogram specifications
    END [package_name];
    b.             Syntax Package Body :
    CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS
    private type and variable declarations
    subprogram bodies
    [BEGIN initialization statements]
    END [package_name];
    c.              Contoh Package Parent:
    CREATE or REPLACE PACKAGE pkg_emp is
    PROCEDURE view_emp_sal(emp_id employees.employee_id%type, gaji out employees.salary%type);
    FUNCTION view_emp_sal1(emp_id employees.employee_id%type) RETURN NUMBER;
    END;

CURSOR
Cursor merupakan sejenis variabel yang dapat digunakan untuk menampung banyak nilai berupa baris atau record. Nilai-nilai yang disimpan di dalam sebuah Cursor selanjutnya dapat dimanipulasi sehingga dapat digunakan sesuai kebutuhan. Atau dapat dikatakan bahwa Cursor merupakan pointer yang menunjuk ke suatu bagian memori untuk menyimpan hasil instruksi SQL. Hasil instruksi SQL tersebut biasanya merupakan multiple row, dan Cursor digunakan untuk menunjuk (pointer) ke salah satu baris data.
Dalam pemakaiannya, sebuah Cursor akan melalui beberapa tahap yakni :
  1. Deklarasi (Declare)
  2. Buka (Open)
  3. Ambil Data (Fetch)
  4. Tutup (Close).

Ada pula yang menyebutkan lima tahap, yakni :
  1. Deklarasi (Declare)
  2. Buka (Open)
  3. Baca Berulang (Loop / Fetch)
  4. Tutup (Close)
  5. Dealokasi Memori (Deallocate)

Cursor sendiri dibedakan menjadi :
  1. Cursor Eksplisit, merupakan Cursor yang harus dibuka dan ditutup secara manual.
  2. Cursor Implisit, merupakan Cursor yang tidak perlu untuk dideklarasikan sebelumnya.

                                            Procedure

            Procedure adalah suatu blok PL/SQL yang menyimpan sekumpulan perintah yang tidak disertai dengan pengembalian nilai. Dengan kata lain, procedure hanya melakukan proses tertentu saja.
            Procedure Ditandai dengan adanya katakunci CREATE PROCEDURE di ikuti oleh nama prosedur dan parameternya.Opsi lain ialah dengan mengikuti CREATE dengan OR REPLACE. Dengan begitu jika telah ada procedure yang sama sebelumnya maka akan di gantikan dengan procedure yang baru dan prosedure yang lama akan hilang.
Syntax untuk membuat procedure
                                                           
CREATE [OR REPLACE] PROCEDURE nama_procedure
(parameter_1 tipedata, parameter_2 tipedata, …) IS
variabel-variabel_lokal
BEGIN
            Statemen;
            ……
END;
            Ada sejumlah parameter, diantaranya ialah IN (read-only), OUT (write-only) dan INOUT (read and write)
1.      IN parameter  Merupakan Tipe parameter yang didefinisikan pada aktual parameter untuk kemudian di tangkap oleh formal parameter. Parameter IN telah di definisikan secara default oleh oracle
CREATE OR REPLACE PROCEDURE luaslingkaran1 (r IN NUMBER) IS
phi NUMBER:=3.14;
luas NUMBER;
BEGIN
luas := phi*r*r;
DBMS_OUTPUT.PUT_LINE(‘Luas lingkaran dengan jari-jari ‘||r||’ = ‘||luas);
END;
/

2.      OUT Parameter. Merupakan tipe parameter pada procedure yang nilainya dapat digunakan oleh si pemanggil procedure dan bisa di bilang OUT parameter  merupakan kebalikan dari IN parameter
CREATE OR REPLACE PROCEDURE luaslingkaran2 (r IN NUMBER, luas OUT NUMBER) IS
phi NUMBER:=3.14;
BEGIN
luas := phi*r*r;
DBMS_OUTPUT.PUT_LINE(‘Luas lingkaran dengan jari-jari ‘||r||’ = ‘||luas);
END;
/
3.      IN OUT Parameter. Merupakan tipe parameter yang digunakan untuk mengirimkan sebuah nilai ke procedure yang kemudian akan di proses dan di kembalikan kepada si pemanggil proced.

                              FUNCTION

Function merupakan sebuah blok PL/SQL yang dapat mengembalikan sebuah nilai. Function juga dapat disimpan dalam sebuah schema object, sehingga dapat digunakan secara berulang-ulang.
Berikut Perbedaan Procedure dengan Function
Syntax Function :
    CREATE [OR REPLACE] FUNCTION function_name
    [(parameter1 [mode1] datatype1, …)]
    RETURN datatype IS|AS
    [local_variable_declarations; …]
    BEGIN
    – actions;
    RETURN expression;
    END [function_name];
Contoh :
    SET SERVEROUTPUT ON
CREATE OR REPLACE FUNCTION Lihat_Gaji (ID Employees.employee_id%TYPE)
    RETURN NUMBER
    IS
    Gaji NUMBER;
    BEGIN
    SELECT Salary INTO Gaji FROM Employees
    WHERE employee_id = id;
    RETURN Gaji;
    END;
Fungsi diatas adalah fungsi yang digunakan untuk melihat gaji employee berdasarkan employee_id.