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 :
- Modularity
- Memudahkan dalam hal Maintenance
- Memudahkan dalam hal design aplikasi
- Dapat Menyembunyikan Informasi, karena yang hanya ditampilkan dalam sebuah aplikasi hanya parent atau spesifikasinya saja, sedangkan body nya disembunyikan dan tidak dapat diakses.
- Added functionality
- Meningkatkan Performance
- Dapat menggunakan Overloading
Package
terdiri dari 2 bagian :
- Bagian Spesifikasi atau Parent
- Bagian Body
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 isPROCEDURE 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 :
- Deklarasi (Declare)
- Buka (Open)
- Ambil Data (Fetch)
- Tutup (Close).
Ada
pula yang menyebutkan lima tahap, yakni :
- Deklarasi (Declare)
- Buka (Open)
- Baca Berulang (Loop / Fetch)
- Tutup (Close)
- Dealokasi Memori (Deallocate)
Cursor
sendiri dibedakan menjadi :
- Cursor Eksplisit, merupakan Cursor yang harus dibuka dan ditutup secara manual.
- 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.