0
我有一個運行命令序列存儲過程:MySQL的:得到一個存儲過程,退出早期預警
CREATE PROCEDURE foo
BEGIN
A;
B;
C;
D;
E;
END//
我想,如果是通過命令D
產生的任何警告檢測,而且,如果是的話,停止執行(不要執行命令E
)。
我該怎麼做?
我有一個運行命令序列存儲過程:MySQL的:得到一個存儲過程,退出早期預警
CREATE PROCEDURE foo
BEGIN
A;
B;
C;
D;
E;
END//
我想,如果是通過命令D
產生的任何警告檢測,而且,如果是的話,停止執行(不要執行命令E
)。
我該怎麼做?
這工作,但似乎明確警告,這是不是很大:
CREATE PROCEDURE foo
BEGIN
DECLARE EXIT HANDLER FOR SQLWARNING
SET @exiting=1 -- any statement will work here
;
A;
B;
C;
D;
END//
您可以爲您的過程提供一個標籤名稱,並從該代碼調用該標籤上的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//
OK,這就是我離開,但我怎麼告訴命令d是否產生警告? – rampion
取決於您爲該步驟所做的事情。你可以創建一個布爾標誌來追蹤出錯的地方。你期望什麼失敗? – StaticVoid
我正在使用LOAD DATA INFILE,並且想要退出,如果有任何行生成警告。 – rampion