Wednesday, 27 November 2013

81. Packages, Data Abstraction, Collections

1.  Packages

PL/SQL mengijinkan kita untuk mem-bundle secara logikal terhadap tipe-tipe, variable-variable, cursor-cursor, dan subprogram-subprogram yang saling terkait ke dalam sebuah package.
Package biasanya memiliki dua bagian: yaitu spesification dan body. Specification merupakan antarmuka untuk aplikasi-aplikasi kita; ia mendeklarasikan tipe, konstanta, variable, exception, cursor, dan subprogram yang tersedia untuk digunakan. Body mendefinisikan cursors dan subprogram dan kemudian mengimplementasikan spesification.
CREATE PACKAGE emp_actions AS -- package specification
PROCEDURE hire_employee (empno NUMBER, ename CHAR, ...);
PROCEDURE fire_employee (emp_id NUMBER);
END emp_actions;
CREATE PACKAGE BODY emp_actions AS -- package body
PROCEDURE hire_employee (empno NUMBER, ename CHAR, ...) IS
BEGIN
INSERT INTO emp VALUES (empno, ename, ...);
END hire_employee;
PROCEDURE fire_employee (emp_id NUMBER) IS
BEGIN
DELETE FROM emp
WHERE empno = emp_id;
END fire_employee;
END emp_actions;
Hanya deklarasi di dalam package yang terlihat dan dapat diakses oleh aplikasi. Detail implementasi di dalam package body tersembunyi dan tidak dapat diakses. Package dapat di-compile dan disimpan di dalam database Oracle, dimana isinya dapat digunakan secara bersama-sama oleh banyak aplikasi. Ketika kita memanggil subprogram yang ter-packaged untuk pertama kalinya, seluruh package akan di-load ke memory. Selanjutnya, pemanggilan berikutnya terhadap subprogram-subprogram yang terdapat di dalam package tersebut tidak lagi memerlukan disk I/O. Dengan demikian, package dapat meningkatkan produktifitas dan meningkatkan performa.


2. Data Abstraction

Data abstraction mengijinkan kita untuk mengekstrak property-property penting dari data sambil mengabaikan detil-detil yang tidak perlu. Sekali kita mendesain struktur data, kita dapat melupakan detilnya dan fokus terhadap algoritma desain yang memanipulasi struktur data tersebut.


3.  Collections

Tipe-tipe collection yaitu TABLE dan VARRAY membolehkan kita untuk mendeklarasikan index berdasarkan table (index-by tables), table bersarang (nested tables), dan array berukuran fleksibel (variable-size arrays). Collection merupakan kelompok
elemen-elemen terurut, yang seluruhnya memiliki tipe sama. Setiap elemen memiliki subscript unik yang menentukan posisinya di dalam collection.
Untuk mereferensi elemen, gunakan sintaks subscripting standar. Sebagai contoh, pemanggilan berikut mereferensi elemen kelima di dalam table bersarang / nested table (dengan tipe Staff) yang dihasilkan oleh function new_hires:
DECLARE
TYPE Staff IS TABLE OF Employee;
staffer Employee;
FUNCTION new_hires (hiredate DATE) RETURN Staff IS
BEGIN ... END;
BEGIN
staffer := new_hires('10-NOV-98')(5);
...
END;
Collections bekerja seperti array yang dapat kita temui pada bahasa pemrograman generasi ke 4. Juga, collections dapat dilewatkan sebagai parameter. Sehingga, kita dapat menggunakannya untuk memindahkan kolom-kolom dari data ke dalam dan keluar dari table-table database atau diantara aplikasi-aplikasi client-side dan stored subprograms.


No comments:

Post a Comment