2014-10-10 63 views
0

我想檢查有效的負載類型。如果傳遞到我的過程中的加載類型無效,我想通過SIGNAL引發錯誤消息。我也希望有一個通用的EXIT處理程序,用於任何其他意想不到的錯誤,這些錯誤會回滾所有更改。問題是普通的EXIT處理程序優先於我的自定義SIGNAL,而我得到的只是'遇到的SQLException'。除非我刪除通用的EXIT處理程序,在這種情況下,我會得到'加載類型不正確'。mysql錯誤處理信號/ resignal

code: 

DECLARE incorrect_load_type CONDITION FOR SQLSTATE '22012'; 

DECLARE EXIT HANDLER FOR incorrect_load_type 
RESIGNAL SET MESSAGE_TEXT = 'Load type is incorrect'; 

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING 
    begin 
    SELECT 'SQLException encountered'; 
    rollback; 
end; 

IF(v_load_type != 'CORRECT TYPE') THEN 
SIGNAL incorrect_load_type; 
END IF; 

回答

1

試試這個

DECLARE incorrect_load_type CONDITION FOR SQLSTATE '22012'; 

DECLARE EXIT HANDLER FOR incorrect_load_type 
begin 
    SELECT 'Load type is incorrect'; 

end; 

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING 
    begin 
    SELECT 'SQLException encountered'; 
    rollback; 
end; 

IF (v_load_type != 'CORRECT TYPE') THEN 
SIGNAL incorrect_load_type; 
END IF;