PL/SQL Packages

9.3. Memahami Package Spec

Package spec mengandung public declarations. Jangkauan dari deklarasi-deklarasi ini bersifat lokal terhadap database schema kita dan global terhadap package tersebut. Sehingga, item-item yang dideklarasikan dapat diakses dari aplikasi kita dan dari manapun di dalam package tersebut. Gambar 9-2 mengilustraikan jangkauan ini.

Gambar 9-2 Jangkauan Package

Spec menampilkan sumber-sumber daya package yang tersedia untuk aplikasi. Seluruh informasi yang dibutuhkan untuk digunakan oleh aplikasi kita tersedia di dalam spec tersebut. Sebagai contoh, deklarasi berikut ini menunjukkan bahwa function dengan nama fac mengambil satu argumen bertipe INTEGER dan mengembalikan sebuah nilai dengan tipe INTEGER:

FUNCTION fac (n INTEGER) RETURN INTEGER; -- mengembalikan n!

Hal itu adalah seluruh informasi yang kita butuhkan untuk memanggil function tersebut. Kita tidak perlu memikirkan implementasi yang mendasarinya (apakah ia iteratif atau rekursif misalnya).

Hanya subprograms dan cursors yang memiliki sebuah implementasi yang mendasari. Sehingga, jika sebuah spec hanya mendeklarasikan types, constants, variables, exceptions, dan call specs, maka package body tidak diperlukan. Marilah kita perhatikan package tak ber-body berikut ini:

CREATE PACKAGE trans_data AS -- package tak ber-body
TYPE TimeRec IS RECORD (
minutes SMALLINT,
hours SMALLINT);
TYPE TransRec IS RECORD (
category VARCHAR2,
account INT,
amount REAL,
time_of TimeRec);
minimum_balance CONSTANT REAL := 10.00;
number_processed INT;
insufficient_funds EXCEPTION;
END trans_data;

Package trans_data tidak memerlukan body karena types, constants, variables, dan exceptions tidak memiliki implementasi yang mendasarinya. Package-package seperti ini mengijinkan kita untuk mendefinisikan global variables-yang dapat digunakan oleh subprograms dan database triggers-yang tetap ada selama satu session.

9.3.1. Mereferensi Isi Package

Untuk mereferensi terhadap types, items, subprograms, dan call specs yang di deklarasikan bersama suatu package spec, kita menggunakan notasi titik (dot notation), seperti berikut ini:

package_name.type_name
package_name.item_name
package_name.subprogram_name
package_name.call_spec_name

Kita dapat mereferensi isi dari package dari database triggers, stored subprograms, 3GL application programs, dan berbagai Oracle tools. Sebagai contoh, kita dapat memanggil procedure ter-package hire_employee dari SQL*Plus, seperti berikut ini:

SQL> CALL emp_actions.hire_employee('TATE', 'CLERK', ...);

Dalam contoh di bawah ini, kita memanggil procedure yang sama dari sebuah anonymous PL/SQL block yang diletakkan di dalam sebuah Pro*C program. Parameter-parameter aktual emp_name dan job_title merupakan host variables (yaitu, variables yang dideklarasikan di dalam sebuah host environment).

EXEC SQL EXECUTE
BEGIN
  emp_actions.hire_employee(:emp_name, :job_title, ...);

Batasan-batasan

Kita tidak dapat mereferensi remote packaged variables baik secara langsung maupun tidak langsung. Sebagai contoh, ktia tidak dapat memanggil procedure berikut ini dari jarak jauh (remotely) karena ia mereferensi kepada sebuah packaged variable di dalam sebuah klausa inisialisasi parameter:

CREATE PACKAGE random AS
seed NUMBER;
PROCEDURE initialize (starter IN NUMBER := seed, ...);

Juga, di dalam sebuah package, kita tidak dapat mereferensi host variables.

Oracle MagazineOracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world’s largest enterprise software company.

For more information about Oracle, please visit their Web site at http://www.oracle.com. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Get Free Oracle Magazine

 

Pages: 1 2 3 4 5 6 7

 

Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi.
Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma dsb. Harga Rp. 24.800,- (157 halaman)

 

Related Articles

 

Comments

[…] Silahkan melanjutkan membaca pembahasan PL/SQL Packages […]

[…] PL/SQL PackagesPL/SQL Object TypesNative Dynamic SQLMenangani PL/SQL ErrorsInteraksi PL/SQL dengan Oracle […]

wah, dapet materi lagi soal package pl sql..

Leave a comment

(required)

(required)


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word