mySql中是否能有SQLserver的@@error变量呢,或者如c#中的try catch语法呢。

答案是肯定的,实例代码如下:

 1 DROP PROCEDURE IF EXISTS sp_call_jobs;
 2 CREATE PROCEDURE sp_call_jobs()
 3     NOT DETERMINISTIC
 4     SQL SECURITY DEFINER
 5     COMMENT ''
 6 BEGIN
 7 declare _row,_err,_count int default 0;
 8 DECLARE CONTINUE  HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;
 9 while _row<3 DO
10   START TRANSACTION;
11      insert into t1(cond_val)values(null);
12   COMMIT;
13  if _err=1 then
14    set _count=_count+1;
15  end if;
16  set _row=_row+1;
17 end while;
18 select _count;
19 END;

语句:

DECLARE CONTINUE  HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;

作用是当遇到SQLEXCEPTION,SQLWARNING,NOT FOUND 错误时,设置_err=1并执行CONTINUE操作,即继续执行后面的语句。

这就与c#中的try catch语法很像。

而且在执行可能出错的语句的时候我们用事务语句:START TRANSACTION; …… COMMIT; 可以保证完整性。

相关文章:

  • 2022-12-23
  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
  • 2022-03-08
  • 2022-01-01
  • 2022-02-25
  • 2022-12-23
猜你喜欢
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-07-08
相关资源
相似解决方案