Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara meningkatkan Pengecualian di dalam Pemicu? Apakah ada cara untuk melakukan ini?

Kamu hampir sampai; Anda memerlukan blok DECLARE di pemicu jika Anda ingin mendeklarasikan sesuatu; ini berarti klausa WHEN Anda berada di tempat yang salah.

create or replace trigger trig1
 before update
 of sal
 on emp
 for each row
 when (new.sal < old.sal)

declare    
   user_xcep EXCEPTION;
   PRAGMA EXCEPTION_INIT( user_xcep, -20001 );
begin
   raise user_xcep;
end;

SQL Fiddle

Beberapa poin:

  1. Tidak pernah menangkap pengecualian dan kemudian memanggil DBMS_OUTPUT.PUT_LINE; itu tidak ada gunanya. Seseorang harus berada di sana untuk melihat hasil untuk setiap rekaman. Jika Anda tidak ingin sesuatu terjadi, ajukan pengecualian lalu tangkap. Saya telah menambahkan kode kesalahan ke pengecualian Anda sehingga Anda dapat menangkap ini di luar pemicu dan menanganinya sesuai keinginan Anda (jangan cetak apa pun ke stdout).
  2. Ini poin kecil tapi saya telah menambahkan sedikit spasi; tidak banyak. Awalnya saya tidak bisa melihat di mana masalahnya dengan kode Anda karena Anda tidak memilikinya.
  3. Anda kehilangan titik koma setelah deklarasi pengecualian dan RAISE.

Baca selengkapnya tentang pengecualian yang ditentukan secara internal di dokumentasi




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. [01000][unixODBC][Driver Manager]Tidak dapat membuka lib '/usr/local/easysoft/Oracle/InstantClient112/lib/libsqora.so' :file tidak ditemukan

  2. SELECT SUM mengembalikan baris ketika tidak ada catatan

  3. Tipe Data Rekaman Berbasis Kursor Dengan Kursor Mengembalikan Beberapa Nilai Dalam Database Oracle

  4. Berapa banyak indeks database yang terlalu banyak?

  5. Memulai SQL di Oracle Application Express