2017-04-03 22 views
0

目前我有退出處理程序:如何在MySQL存儲過程中引發警告?

DECLARE c_invalidParam CONDITION FOR SQLSTATE '48000'; 
DECLARE EXIT HANDLER FOR c_invalidParam 
BEGIN 
    ROLLBACK; 
    SELECT 'I' INTO out_resultCode; 
    SELECT '0' INTO out_accountId; 
    RESIGNAL; 
END; 

IF in_username = '' 
THEN 
    SIGNAL c_invalidParam 
     SET MESSAGE_TEXT = 'sp_test: username may not be empty'; 
END IF; 

這使得我的存儲過程中退出。如何拋出警告並退出存儲過程?

回答

1

以下過程信號錯誤或警告取決於PVAL的值,它的輸入參數:

CREATE PROCEDURE p (pval INT) 
BEGIN 
    DECLARE specialty CONDITION FOR SQLSTATE '45000'; 
    IF pval = 0 THEN 
    SIGNAL SQLSTATE '01000'; 
    ELSEIF pval = 1 THEN 
    SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT = 'An error occurred'; 
    ELSEIF pval = 2 THEN 
    SIGNAL specialty 
     SET MESSAGE_TEXT = 'An error occurred'; 
    ELSE 
    SIGNAL SQLSTATE '01000' 
     SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000; 
    SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001; 
    END IF; 
END;