BEGINEXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
EXCEPTION
WHEN OTHERS THENIF SQLCODE =-955THENNULL;-- suppresses ORA-00955 exceptionELSE
RAISE;ENDIF;END;
Opsi lainnya adalah menggunakan EXCEPTION_INITarahan Pragma untuk mengikat nomor kesalahan Oracle yang diketahui ke pengecualian yang ditentukan pengguna;
DECLARE
name_in_use exception;--declare a user defined exception
pragma exception_init( name_in_use,-955);--bind the error code to the above BEGINEXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
EXCEPTION
when name_in_use thennull;--suppress ORA-00955 exceptionEND;
BTW Apakah ada sintaks untuk menangkap kesalahan dengan hanya memberikan kode kesalahan?
tidak bisakah aku pergi begitu saja tanpa ketika orang lain menaikkan garis?
bernd_k
@bernd_k ya Anda melakukannya, itu merupakan pengecualian yang tidak tertangani
Sathyajith Bhat
2
Silakan tambahkan kenaikan gaji KETIKA ORANG LAIN saat sqlcodeTIDAK 955 =)
Vincent Malgrat
OP mungkin masih ingin meningkatkan kesalahan lainnya. Blok Exception Anda "sebagaimana adanya" berperilaku persis seperti SAAT LAIN KEMUDIAN NULL. Saya pikir OP menginginkan sesuatu yang lebih tepat dan halus.
Vincent Malgrat
@VincentMalgrat Anda benar.
Sathyajith Bhat
5
Mirip dengan apa yang telah disarankan Sathya, tetapi saya ingin menghindari when otherssepenuhnya jika memungkinkan - pengecualian yang tidak tertangani biasanya merupakan hasil yang benar untuk pengecualian yang tidak secara khusus Anda tangani:
sqlcode
TIDAK 955 =)Mirip dengan apa yang telah disarankan Sathya, tetapi saya ingin menghindari
when others
sepenuhnya jika memungkinkan - pengecualian yang tidak tertangani biasanya merupakan hasil yang benar untuk pengecualian yang tidak secara khusus Anda tangani:sumber