mysql儲存過程之if語句瞭解下
阿新 • • 發佈:2019-02-19
mysql中的 IF
語句允許我們根據表示式的某個條件或值結果來執行一組SQL語句,所以我們要在MySQL中形成一個表示式,可以結合文字,變數,運算子,甚至函式來組合。表示式可以返回TRUE
,FALSE
或NULL
,這三個值之一。來看下語法結構:
IF expression THEN
statements;
END IF;
如果上述表示式(expression
)計算結果為TRUE
,那麼將執行statements
語句,否則控制流將傳遞到END IF
之後的下一個語句。咱們來看下IF
語句的執行過程:
咱們再來看下IF ELSE
語句的語法結構:
IF expression THEN
statements;
ELSE
else-statements;
END IF;
完事就來看IF 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
語句。咱們來看下具體的執行過程:咱們接下來使用IF ESLEIF ELSE
語句和GetCustomerLevel()
儲存過程接受客戶編號和客戶級別的兩個引數。首先這個GetCustomerLevel()
儲存過程得先從customers
表中獲得信用額度,完事呢,根據信用額度,它決定客戶級別:PLATINUM
, GOLD
和 SILVER
。引數p_customerlevel
儲存客戶的級別,並由呼叫程式使用,咱們來看下具體的sql:
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$$
確定客戶級別的邏輯的流程圖如下:
好啦,本次分享就到這裡了。
如果感覺不錯的話,請多多點贊支援哦。。。