2

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

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

我想检测 command 是否生成任何警告D,如果是,请停止执行(不要执行 command E)。

我该怎么做?

4

2 回答 2

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//
于 2013-06-27T15:55:09.410 回答
1

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

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

  A;
  B;
  C;
  D;
END//
于 2013-06-27T17:29:18.740 回答