我有一个运行一系列命令的存储过程:
CREATE PROCEDURE foo
BEGIN
A;
B;
C;
D;
E;
END//
我想检测命令D
是否产生任何警告,如果是,则停止执行(不要执行命令E
)。
我该怎么做?
答案 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//