MySQL 存儲過程是一種在數據庫中預定義的程序,可以執(zhí)行 SQL 查詢和操作。在存儲過程中,條件判斷是非常重要的,具體可使用 IF 語句或 CASE 語句。
使用 IF 語句進行條件判斷,語法如下:
IF condition THEN statements; ELSE statements; END IF;
其中,condition 為條件表達式,statements 為當條件表達式成立或不成立時需要執(zhí)行的語句。
例如,下面的代碼演示了一個 MySQL 存儲過程中使用 IF 語句進行條件判斷的示例:
DELIMITER $$ CREATE PROCEDURE test_if(IN num INT) BEGIN IF num >0 THEN SELECT CONCAT(num, ' is greater than 0'); ELSE SELECT CONCAT(num, ' is less than or equal to 0'); END IF; END$$ DELIMITER ;
在上面的代碼中,存儲過程 test_if 接收一個參數 num,如果 num 大于 0,則打印“num is greater than 0”,否則打印“num is less than or equal to 0”。
使用 CASE 語句進行條件判斷,語法如下:
CASE expr WHEN value_1 THEN statements; WHEN value_2 THEN statements; ... ELSE statements; END CASE;
其中,expr 為表達式,value_1、value_2 等為需要比較的值,statements 為當 expr 等于某個 value 時需要執(zhí)行的語句;當 expr 不等于任何一個 value 時,執(zhí)行 ELSE 中的語句。
例如,下面的代碼演示了一個 MySQL 存儲過程中使用 CASE 語句進行條件判斷的示例:
DELIMITER $$ CREATE PROCEDURE test_case(IN num INT) BEGIN CASE WHEN num >0 THEN SELECT CONCAT(num, ' is greater than 0'); WHEN num< 0 THEN SELECT CONCAT(num, ' is less than 0'); ELSE SELECT CONCAT(num, ' is equal to 0'); END CASE; END$$ DELIMITER ;
在上面的代碼中,存儲過程 test_case 接收一個參數 num,根據 num 的值分別打印“num is greater than 0”、“num is less than 0”或“num is equal to 0”。