如何在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;