drop table if exists t2;
create table t2
( s1 int, primary key (s1)
) engine=innodb;
delete from t2;
drop procedure if exists p23;
delimiter //
create procedure p23()
begin
declare continue handler
for sqlstate '23000' set @x2 = 1;
set @x = 1;
insert into t2 values (1);
set @x = 2;
insert into t2 values (1);
set @x = 3;
end;//
delimiter ;
call p23();
select @x, @x2;
/*3000sqlstate是更常用的,當外來鍵約束出錯或主鍵約束出錯就被呼叫了
mysql允許兩種處理器,一種是exit處理,我們剛才所用的就是這種。另一種就是我們將要演示的,continue處理,
它跟exit處理類似,不同在於它執行後,原主程式仍然繼續執行
+------+------+
| @x | @x2 |
+------+------+
| 3 | 1 |
+------+------+
*/
mysql儲存過程異常處理
定義條件和處理程式是事先定義程式執行過程中可能遇到的問題。並且可以在處理程式中定 決這些問題的辦法。這種方式可以提前 可能出現的問題,並提出解決辦法。這樣可以增強程式處理問題的能力,避免程式異常停止。mysql中都是通過declare關鍵字來定義條件和處理程式。本小節中將詳細講解如何定義條件和處理程...
ORACLE儲存過程異常處理。
create or replace procedure p tx getfaxdata as v errorcode number 出錯的 v errormsg varchar2 200 錯誤的訊息顯示 v currentuser varchar2 8 當前資料庫使用者 v information ...
mssql儲存過程異常處理
mssql2000和mssql2005以上版本的異常處理語法是不相同的。sql server 2005以上版本支援結構化異常處理,而mssql2000是不支援的。1 先看mssql 2000的異常處理語法 create proc sp mssql2000 titlename nvarchar 128...