Wednesday, 27 November 2013

85. Stored Subprograms PL-SQL

Stored Subprograms

Subprogram-subprogram dapat di-compile secara terpisah dan disimpan secara permanen di dalam database Oracle, dan siap untuk dieksekusi. Subprogram secara eksplisit di-CREATE dengan menggunakan tool yang disebut dengan stored subprogram. Sekali di-compile dan disimpan di dalam data dictionary, ia merupakan schema object, yang mana dapat direferensi atau digunakan oleh aplikasi-aplikasi yang terhubung dengan database.
Stored subprogram (subprogram yang tersimpan di database) yang didefinisikan di dalam package disebut packaged subprograms. Jika subprogram didefinisikan secara bebas atau berdiri sendiri, maka dinamakan standalone subprograms. Dan jika subprogram didefinisikan di dalam subprogram yang lain atau di dalam blok PL/SQL, maka dinamakan local subprograms, yang mana tidak dapat digunakan oleh aplikasi-aplikasi lain serta ia ada hanya untuk melengkapi blok yang menyertainya.
Stored subprograms menawarkan produktifitas lebih, performa yang lebih baik, penghematan memori, keutuhan aplikasi, dan keamanan yang lebih ketat. Sebagai contoh, dengan mendesain aplikasi-aplikasi diantara banyaknya stored procedures dan functions, kita dapat meniadakan kejadian dimana kita menulis kode program yang sama berkali-kali, karena dengan subprogram kita hanya perlu menulis sekali dan meletakkannya di database, sehingga seluruh aplikasi dapat saling berbagi menggunakannya, dan pada akhirnya hal ini akan meningkatkan produktifitas kita.
Kita dapat memanggil stored subprograms dari database trigger, stored program lainnya, aplikasi Oracle Precompiler, aplikasi OCI, atau secara interaktif melalui SQL*Plus atau Enterprise Manager. Sebagai contoh, kita dapat memanggil procedure create_dept dari SQL*Plus dengan cara:
SQL> CALL create_dept('FINANCE', 'NEW YORK');
Subprograms disimpan dalam keadaan terkompilasi. Sehingga, ketika dipanggil, mereka akan di-load dan segera dilewatkan ke engine PL/SQL. Juga, mereka memiliki keuntungan dalam hal pembagian memory. Sehingga, hanya satu copy dari subprogram saja yang perlu di-load ke memori untuk dieksekusi oleh banyak user secara bersamaan.


Database Triggers

Database trigger adalah stored subprogram yang terkait dengan database table, view, atau sebuah event (kejadian). Kita dapat memerintahkan Oracle untuk mengeksekusi trigger secara otomatis sebelum atau sesudah perintah INSERT, UPDATE, atau DELETE berpengaruh terhadap table. Satu dari banyak penggunaan trigger adalah untuk meng-audit modifikasi data. Sebagai contoh, trigger pada level table berikut ini dieksekusi kapanpun gaji pada table emp di-update.
CREATE TRIGGER audit_sal
AFTER UPDATE OF sal ON emp
FOR EACH ROW
BEGIN
INSERT INTO emp_audit VALUES ...
END;
/
Bagian executable dari trigger dapat mengandung perintah-perintah prosedural dan juga perintah-perintah Data Manipulation Language dari SQL. Disamping trigger-trigger pada level table, terdapat pula trigger-trigger instead-of untuk view dan trigger-trigger system-event untuk schema-schema.


No comments:

Post a Comment