PL/SQL Packages
9.9. Pengenalan Product-Specific Packages
Oracle dan beberapa Oracle tools tersedia bersama product-specific packages yang membatu kita membangun aplikasi-aplikasi berbasis PL/SQL. Sebagai contoh, Oracle tersedia dengan banyak utility packages, beberapa dari mereka akan kita bahas disini.
9.9.1. Tentang DBMS_ALERT Package
Package DBMS_ALERT mengijinkan kita menggunakan database triggers untuk memberikan sinyal kepada sebuah aplikasi ketika nilai-nilai tertentu dari database berubah. Sinyal-sinyal ini berbasis transaksi dan asynchronous (yaitu, mereka independen terhadap suatu mekanisme timing). Sebagai contoh, sebuah perusahaan dapat menggunakan package ini untuk mengubah nilai dari portfolio investasi mereka seperti new stock dan bond quotes arrive.
9.9.2. Tentang DBMS_OUTPUT Package
Package DBMS_OUTPUT memungkinkan kita menampilkan output dari PL/SQL blocks dan subprograms, yang membuatnya lebih mudah untuk di-test dan di-debug. Procedure put_line mengeluarkan informasi ke sebuah buffer di dalam SGA (System Global Area). Kita menampilkan informasi tersebut dengan memanggil procedure get_line atau dengan mengatur SERVEROUTPUT di dalam SQL*Plus. Sebagai contoh, asumsikan kita menciptakan stored procedure berikut ini:
CREATE PROCEDURE calc_payroll (payroll OUT NUMBER) AS
CURSOR c1 IS SELECT sal, comm FROM emp;
BEGIN
payroll := 0;
FOR c1rec IN c1 LOOP
c1rec.comm := NVL(c1rec.comm, 0);
payroll := payroll + c1rec.sal + c1rec.comm;
END LOOP;
/* Menampilkan informasi debug. */
dbms_output.put_line(’Value of payroll: ’ || TO_CHAR(payroll));
END;
Ketika kita menjalankan perintah-perintah berikut ini, SQL*Plus menampilkan nilai yang diberikan oleh procedure kepada parameter payroll:
SQL> SET SERVEROUTPUT ON SQL> VARIABLE num NUMBER SQL> CALL calc_payroll(:num); Value of payroll: 31225
9.9.3. Tentang DBMS_PIPE Package
Package DBMS_PIPE mengijinkan session yang berbeda untuk berkomunikasi melalui named pipes. (Sebuah pipe adalah sebuah area dari memory yang digunakan oleh satu proses untuk melewatkan informasi kepada yang lain.) Kita dapat menggunakan procedure pack_message dan send_message untuk mengepak sebuah pesan ke dalam sebuah pipe, lalu mengirimkannya ke session yang lain di dalam instance yang sama.
Pada sisi yang lain dari pipe, kita dapat menggunakan procedure receive_message dan unpack_message untuk menerima dan membuka paking (membaca) pesan. Named pipes sangat berguna dalam banyak hal. Sebagai contoh, kita dapat menulis rutin di dalam C yang memperbolehkan external programs untuk mengumpulkan informasi, dan kemudian mengirimkannya melalui pipes kepada procedures yang tersimpan di dalam sebuah Oracle database.
9.9.4. Tentang UTL_FILE Package
Package UTL_FILE mengijinkan PL/SQL programs kita untuk membaca dan menulis text files operating system (OS). Ia menyediakan sebuah versi terbatas dari standart OS stream file I/O, termasuk operasi-operasi open, put, get, dan close.
Ketika kita ingin membaca atau menulis sebuah text file, kita memanggil function fopen, yang menghasilkan sebuah file handle untuk digunakan di dalam subsequent procedure calls. Sebagai contoh, procedure put_line menulis sebuah text string dan pembatas baris untuk sebuah open file, dan procedure get_line membaca sebuah baris dari text dari sebuah open file ke dalam output buffer.
9.9.5. Tentang UTL_HTTP Package
Package UTL_HTTP mengijinkan PL/SQL programs kita untuk membuat pemanggilan terhadap hypertext transfer protocol (HTTP). Ia dapat menampilkan data dari Internet atau memanggil Oracle Web Server cartridges. Package tersebut memiliki dua entry points, yang masing-masing menerima sebuah URL (uniform resource locator) string, menghubungi situs tertentu, dan menghasilkan data yang diminta, yang mana biasanya berada dalam format hypertext markup language (HTML).
9.10. Panduan Penulisan Package
Ketika menulis packages, buatlah mereka seumum mungkin sehingga mereka dapat digunakan kembali didalam aplikasi-aplikasi berikutnya. Hindari menulis packages yang mengandung fitur-fitur yang sebenarnya sudah disediakan oleh Oracle.
Package specs merefleksikan desain dari palikasi kita. Sehingga, definisikan mereka sebelum package bodies. Tempatkan pada spec hanya types, items, dan subprograms yang harus terlihat oleh users dari package tersebut. Dengan demikian, developers lainnya tidak salah menggunakan package dengan membasiskan kode program mereka kepada detail-detail implementasi yang tidak relevan.
Untuk mengurangi kebutuhan kompilasi ulang ketika kode program diubah, tempatkan sesedikit mungkin item-item di dalam sebuah package spec. Perubahan terhadap sebuah package body tidak menyebabkan Oracle meng-compile ulang procedures yang bergantung kepadanya. Namun, perubahan terhadap sebuah package spec membuat Oracle perlu meng-compile ulang setiap stored subprogram yang mereferensi kepada package tersebut.
Silahkan melanjutkan membaca pembahasan PL/SQL Object Types
| 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, Uranus dsb. |


































