MySQL:获取存储过程以在警告时提前退出

时间:2013-06-27 15:45:38

标签: mysql sql stored-procedures

我有一个运行一系列命令的存储过程:

CREATE PROCEDURE foo
BEGIN
   A;
   B;
   C;
   D;
   E;
END//

我想检测命令D是否产生任何警告,如果是,则停止执行(不要执行命令E)。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以为您的程序指定一个标签名称,并从代码中调用该标签上的LEAVE命令。

CREATE PROCEDURE foo
myLabelName:BEGIN
   A;
   B;
   C;
   D; 
   If D is null
     Then Select 'Exiting at D';
     LEAVE myLabelName;
   End If
   E;
END//

答案 1 :(得分:1)

这有效,但似乎清除警告,这不是很好:

CREATE PROCEDURE foo
BEGIN
  DECLARE EXIT HANDLER FOR SQLWARNING
    SET @exiting=1 -- any statement will work here
  ;

  A;
  B;
  C;
  D;
END//