異常處理
如果出現報錯了, 怎麼辦
擱在以前, 直接就停了
有了異常處理, 我們可以選擇繼續還是終止
create table test(id int);
create table test(id int);
select 1+1;
複製程式碼
這段程式碼會報錯(1050), 因為連續建立了兩個相同的表...
create table test(id int)
> 1050 - Table 'test' already exists
> 時間: 0.003s
複製程式碼
所以select 1+1;
不會執行, 我們也看不到2
...
現在我們有兩種選擇
- 忽略錯誤, 繼續執行, 你會看到
2
- 終止sql語句, 但是不要報錯
continue
跳過錯誤
drop PROCEDURE if EXISTS hello;
create procedure hello() begin
declare existed condition for 1050;
declare continue handler for existed set @fail = 1;
create table teacher(id int);
select 1+1;
end;
call hello();
複製程式碼
也可以簡寫
drop PROCEDURE if EXISTS hello;
create procedure hello() begin
declare continue handler for 1050 set @fail = 1;
create table teacher(id int);
select 1+1;
end;
call hello();
複製程式碼
exit
終止程式
drop PROCEDURE if EXISTS hello;
create procedure hello() begin
declare existed condition for 1050;
declare exit handler for existed set @fail = 1;
create table teacher(id int);
select 1+1;
end;
call hello();
複製程式碼
整行語句會因為重複建表而終止, 也不會輸出2, 但是不會報錯 也可以簡寫成
drop PROCEDURE if EXISTS hello;
create procedure hello() begin
declare exit handler for 1050 set @fail = 1;
create table teacher(id int);
select 1+1;
end;
call hello();
複製程式碼