1. 程式人生 > >MySQL 存儲過程 if語句

MySQL 存儲過程 if語句

表達 調用程序 red latin true 演示 表達式計算 存儲 mysql-

MySQL 存儲過程 if語句

MySQL IF語句允許您根據表達式的某個條件或值結果來執行一組SQL語句。 要在MySQL中形成一個表達式,可以結合文字,變量,運算符,甚至函數來組合。表達式可以返回TRUE,FALSENULL,這三個值之一。

MySQL IF語句語法

下面說明了IF語句的語法:

IF expression THEN 
   statements;
END IF;

如果表達式(expression)計算結果為TRUE,那麽將執行statements語句,否則控制流將傳遞到END IF之後的下一個語句。

以下流程圖演示了IF語句的執行過程:

技術分享圖片

MySQL IF ELSE語句

如果表達式計算結果為FALSE時執行語句,請使用IF ELSE語句,如下所示:

IF expression THEN
   statements;
ELSE
   else-statements;
END IF;

以下流程圖說明了IF ELSE語句的執行過程:

技術分享圖片

MySQL IF ELSEIF ELSE語句

如果要基於多個表達式有條件地執行語句,則使用IF ELSEIF ELSE語句如下:

IF expression THEN
   statements;
ELSEIF elseif-expression THEN
   elseif-statements;
...
ELSE else-statements; END IF;

如果表達式(expression)求值為TRUE,則IF分支中的語句(statements)將執行;如果表達式求值為FALSE,則如果elseif_expression的計算結果為TRUE,MySQL將執行elseif-expression,否則執行ELSE分支中的else-statements語句。具體流程如下

技術分享圖片

MySQL IF語句示例

以下示例說明如何使用IF ESLEIF ELSE語句,GetCustomerLevel()存儲過程接受客戶編號和客戶級別的兩個參數。

首先,它從customers表中獲得信用額度

然後,根據信用額度,它決定客戶級別:PLATINUM , GOLDSILVER

參數p_customerlevel存儲客戶的級別,並由調用程序使用。

USE yiibaidb;

DELIMITER $$

CREATE PROCEDURE GetCustomerLevel(
    in  p_customerNumber int(11), 
    out p_customerLevel  varchar(10))
BEGIN
    DECLARE creditlim double;

    SELECT creditlimit INTO creditlim
    FROM customers
    WHERE customerNumber = p_customerNumber;

    IF creditlim > 50000 THEN
 SET p_customerLevel = PLATINUM;
    ELSEIF (creditlim <= 50000 AND creditlim >= 10000) THEN
        SET p_customerLevel = GOLD;
    ELSEIF creditlim < 10000 THEN
        SET p_customerLevel = SILVER;
    END IF;

END$$

以下流程圖演示了確定客戶級別的邏輯

技術分享圖片

MySQL 存儲過程 if語句