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.

 

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

 

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

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

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

[…] 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. […]

[…] Dynamic SQLPL/SQL Object TypesPL/SQL PackagesPL/SQL SubprogramsInteraksi PL/SQL dengan […]

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