PL/SQL Subprograms
8.15.11. Melakukan Operasi-operasi DML di dalam Table Functions
Untuk mengeksekusi perintah-perintah DML, sebuah table function harus dideklarasikan dengan autonomous transaction pragma. Pragma ini menyebabkan function yang dieksekusi di dalam sebuah autonomous transaction tidak dibagi (di-share) oleh proses-proses yang lain.
Kita dapat menggunakan sintaks berikut ini untuk mendeklarasikan sebuah table function dengan autonomous transaction pragma:
CREATE FUNCTION f(p SYS_REFCURSOR) return CollType PIPELINED IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN ... END;
Selama eksekusi paralel, setiap instance dari table function tersebut menciptakan transaksi independen.
8.15.12. Melakukan Operasi-operasi DML pada Table Functions
Table functions tidak dapat menjadi tabel target di dalam perintah-perintah UPDATE, INSERT, atau DELETE. Sebagai contoh, perintah-perintah berikut ini akan menyebabkan error:
UPDATE F(CURSOR(SELECT * FROM tab)) SET col = value;
INSERT INTO f(...) VALUES ('any', 'thing');
Namun, kita dapat menciptakan sebuah view diatas sebuah table function dan menggunakan trigger INSTEAD OF untuk meng-update-nya. Sebagai contoh:
CREATE VIEW BookTable AS
SELECT x.Name, x.Author
FROM TABLE(GetBooks('data.txt')) x;
Trigger INSTEAD OF berikut ini dijalankan ketika pengguna menambahkan sebuah baris data ke dalam view BookTable:
CREATE TRIGGER BookTable_insert INSTEAD OF INSERT ON BookTable REFERENCING NEW AS n FOR EACH ROW BEGIN ... END; INSERT INTO BookTable VALUES (...);
Trigger-trigger INSTEAD OF dapat didefinisikan untuk semua operasi-operasi DML pada sebuah view yang dibangun pada sebuah table function.
8.15.13. Menangani Exceptions di dalam Table Functions
Exception handling dalam table functions bekerja seperti halnya user-defined functions pada umumnya.
Beberapa bahasa, seperti halnya C dan Java, menyediakan mekanisme untuk exception handling yang disediakan oleh user. Jika sebuah exception muncul bersama sebuah table function ditangani, table function tersebut mengeksekusi exception handler dan meneruskan pemrosesan. Keluar dari exception handler membawa control ke jangkauan yang melingkupinya. Jika exception tersebut dikosongkan, maka eksekusi akan berlanjut secara normal.
Sebuah undhandled exception (exception tak tertangani) di dalam sebuah table function menyebabkan transaksi induk di-rollback.
| 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) |
Comments
[…] Klausa AUTHID menentukan apakah seluruh subprogram-subprogram ter-package dijalankan dengan privileges dari definer (default) atau invoker-nya, dan apakah referensi tak terkualifikasi dari mereka terhadap schema objects ditetapkan di dalam schema dari definer atau invoker tersebut. Untuk informasi lebih, kita dapat membaca kembali pembahasan PL/SQL Subprograms. […]


[…] PL/SQL Subprograms | Hastinapura […]