Oracle的异常处理
oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中l 预定义例外用于处理常见的oracle错误;l 非预定义例外用于
Oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中
l 预定义例外用于处理常见的oracle错误;
l 非预定义例外用于处理预定义所不能处理的oracle错误;
l 自定义例外处理与oracle错误无关的其他情况。
Oracle代码编写过程中,如果捕捉例外则会在plsql块内解决运行错误,否则将错误传递到调用环境。
常用预定义例外:
为了处理各种常见的oracle错误,plsql为开发人员提供了二十多个预定义例外,每个预定义例外都对应一个oracle系统错误。
Access_info_null(ora-06530):当访问没有初始化的对象时触发。
Case_not_found(ora-06592):在case过程中when后没有包含必要的条件分支并且没有else子句,则会触发本异常。
Collection_is_null(ora-06531):访问未初始化的集合元素(嵌套表或者varray)。
Cursor_already_open(ora-06511):重新打开已经打开的游标。
Dup_val_on_index(ora-00001):当中唯一索引所对应的列上键入重复值时。
Invalid_cursor(ora-01001):试图在不合法的游标上执行操作时,譬如没打开游标就提取内容。
Invalid_number(ora-01722):当试图将非法的字符串转换为数字类型时。
No_data_found(ora-01403):执行select into未返回行,或者引用了索引表未初始化的元素时。
Too_many_rows(ora-01422):执行select into返回超过一行数据时。
Zero_divide(ora-01476):0作为被除数时。
Subscript_beyond_count(ora-06533):使用嵌套表或者varray集合时,如果引用下标超过last。
Subscript_outside_limit(ora-06532):使用嵌套表或varray集合时,如果引用下标小于first。
Value_error(ora-06502):在执行赋值操作时,如果变量长度不足以容纳实际数据。
Login_denied(ora-01017):连接数据库时提供了不正确的用户名或口令。
Not_logged_on(ora-01012):在程序没有连接到oracle数据库时执行plsql代码则会触发。
Program_error(ora-06501):plsql内部问题。
Rowtype_mismatch(ora-06504):执行赋值操作时,如果宿主游标变量和PLSQL游标变量返回类型不兼容时。
Self_is_null(ora-30625):使用对象类型时,如果在null实例上调用成员方法。
Storage_error(ora-06500):超出内存空间或者内存被损坏。
Sys_invalid_rowid(ora-01410):无效字符串企图转换为rowid类型时。
Timeout_on_resource(ora-00051):等待资源时出现超时错误。
处理非预定义例外:
上面描述的21中预定义之外的其他oracle错误通称为非预定义例外,对这种例外的处理包括三步:首先的定义部分定义例外;然后使用progma exception(exception_name,exception_number) 在例外和oracle错误之间建立关联,这时要求用户知道可能出现的错误号(例外函数sqlcode、sqlerrm和raise_application_error);最终在例外处理部分捕捉并处理例外。
Declare
E_integrity exception
Pragma exception_init(e_integrity,-2291);
Begin
Sqlstatement;
Exception
When e_integrity then
Dbms_output.put_line(‘数据完整性错误。’);
End;
处理自定义例外:
预定义例外和非预定义例外都跟oracle错误有关,而自定义例外则是用户根据业务处理时特定的情况而自定义的例外。使用自定义例外时,首先需要在定义部分declare定义例外,然后在执行部分触发例外(使用raise语句),最后在例外处理部分捕捉并处理例外。
declare
myexception exception;
begin
if1=0then
raise myexception;
endif;
exception
when myexception then
dbms_output.put_line('asdf');
end;
使用例外函数:
oracle内置函数sqlcode和sqlerrm主要用在others处理器中,分别用来返回oracle的错误代码和错误消息。一般情况下sqlcode返回负数标识的oracle错误代码,除非错误为‘ora-01403:no data found’此时对应的sqlcode为+100,对于用户自定义的异常,sqlcode返回+1,如果没有异常被触发,sqlcode返回0。
Begin
Exception
When others then
Dbms_output.put_line(sqlcode||sqlerrm(sqlcode));
End;
Oracle过程raise_application_error用于在plsql应用程序中自定义错误消息。注意该过程只能在数据库端的子程序(过程、函数、包、触发器)中使用,而不能在匿名块和客户端的子程序中使用。语法为raise_application_error(error_number,message[,[true|false]]);其中error_number用于定义错误号,该错误号必须在-20000到-20999之间的负整数;message用于指定错误消息,并且该消息的长度不能超过2048字节;第三个参数如果为true,则该错误会被放在先前错误堆栈中,如果为false(默认值)则会替代先前所有错误。
plsql编译警告:
plsql警告可以分为三类,,severe用于检查可能出现的不可预料或者错误结果,例如参数的别名问题;performance用于检查可能引起的性能问题,例如执行insert操作时为number列提供了varchar2类型数据;informational用于检查子程序中的死代码;all用于检查所有警告。为了数据库可以在编译plsql子程序时发出警告信息,需要设置初始化参数plsql_warnings。这个参数不仅可以在系统级或者会话级设置,也可以在alter procedure命令中设置。Alter {system|session|procedure} set plsql_warnings=’{enable|disable:{all |performance|severe|informational}}’;为了检查是否存在对应警告信息,必须先激活警告检查,然后重新编译子程序,最后使用show errors命令显示警告错误。
createorreplaceprocedure my_test
is
begin
if1=0then
dbms_output.put_line('test');
endif;
end;
SQL> alter procedure my_test compile plsql_warnings = 'enable:all';
Procedure altered
SQL> show errors;
Errors for PROCEDURE SYS.MY_TEST:
LINE/COL ERROR
-------- -------------------------
10/5 PLW-06002: 无法执行的代码

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.
