2014-10-10 30 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;