Secara umum, prosedur tidak boleh dilakukan. Keputusan kontrol transaksi semacam itu harus diserahkan pada kode tingkat yang lebih tinggi yang tahu kapan transaksi logis benar-benar selesai. Jika Anda melakukan di dalam prosedur tersimpan, Anda membatasi penggunaannya kembali karena penelepon yang menginginkan perubahan prosedur menjadi bagian dari transaksi yang lebih besar tidak bisa begitu saja memanggil prosedur secara langsung.
Jika Anda memanggil prosedur secara interaktif, Anda harus secara eksplisit melakukan atau mengembalikan transaksi karena Oracle tidak tahu apakah Anda ingin panggilan prosedur menjadi transaksi logis atau jika Anda ingin membuat transaksi yang lebih besar yang melibatkan beberapa panggilan prosedur. Jika Anda menggunakan dbms_scheduler
, dbms_scheduler
anggaplah bahwa suatu pekerjaan adalah transaksi yang logis dan dilakukan pada akhir pekerjaan dengan asumsi itu berhasil ( dbms_job
melakukan hal yang sama).
Fungsi tidak boleh memanipulasi data sejak awal. Fungsi yang memanipulasi data tidak dapat dipanggil dari pernyataan SQL (kecuali kasus sudut di mana fungsi itu sendiri dinyatakan menggunakan transaksi otonom yang hampir tidak pernah sesuai). Inti dari memiliki kedua fungsi dan prosedur adalah bahwa fungsi dapat tertanam dalam pernyataan SQL dan dapat lebih bebas diberikan kepada pengguna karena mereka tidak mengubah data apa pun.