我有一个运行一系列命令的存储过程:
CREATE PROCEDURE foo
BEGIN
A;
B;
C;
D;
E;
END//
我想检测 command 是否生成任何警告D
,如果是,请停止执行(不要执行 command E
)。
我该怎么做?
我有一个运行一系列命令的存储过程:
CREATE PROCEDURE foo
BEGIN
A;
B;
C;
D;
E;
END//
我想检测 command 是否生成任何警告D
,如果是,请停止执行(不要执行 command E
)。
我该怎么做?
您可以给您的过程一个标签名称,并从代码中对该标签调用 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//
这有效,但似乎清除了警告,这不是很好:
CREATE PROCEDURE foo
BEGIN
DECLARE EXIT HANDLER FOR SQLWARNING
SET @exiting=1 -- any statement will work here
;
A;
B;
C;
D;
END//