如何在MySQL存储过程中引发警告?

问题描述:

目前我有退出处理程序:如何在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; 

这使得我的存储过程中退出。如何抛出警告并退出存储过程?

以下过程信号错误或警告取决于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;