在MySQL中,沒有內置的斷言函數
IF
語句或CASE
表達式來檢查條件。SIGNAL SQLSTATE
拋出一個錯誤。DECLARE CONTINUE HANDLER
捕獲錯誤并處理它。以下是一個簡單的示例:
-- 創建一個存儲過程,用于檢查輸入的年齡是否大于等于18歲
DELIMITER //
CREATE PROCEDURE check_age(IN input_age INT)
BEGIN
IF input_age < 18 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = '年齡必須大于等于18歲';
ELSE
SELECT '年齡滿足條件';
END IF;
END //
DELIMITER ;
-- 調用存儲過程并捕獲錯誤
SET @input_age = 16;
DECLARE CONTINUE HANDLER FOR SQLSTATE '45000'
SET @error_message = '輸入的年齡不滿足條件';
CALL check_age(@input_age);
SELECT @error_message;
在這個示例中,我們創建了一個名為check_age
的存儲過程,該過程接受一個整數參數input_age
。如果input_age
小于18,則拋出一個錯誤。在調用存儲過程時,我們使用DECLARE CONTINUE HANDLER
捕獲錯誤并將其存儲在@error_message
變量中。最后,我們選擇@error_message
變量以查看結果。