本文實例講述了mysql存儲過程之if語句用法。分享給大家供大家參考,具體如下:
mysql中的 IF語句允許我們根據(jù)表達式的某個條件或值結(jié)果來執(zhí)行一組SQL語句,所以我們要在MySQL中形成一個表達式,可以結(jié)合文字,變量,運算符,甚至函數(shù)來組合。表達式可以返回TRUE,FALSE或NULL,這三個值之一。來看下語法結(jié)構(gòu):
IF expression THEN
statements;
END IF;
如果上述表達式(expression)計算結(jié)果為TRUE,那么將執(zhí)行statements語句,否則控制流將傳遞到END IF之后的下一個語句。咱們來看下IF語句的執(zhí)行過程:
咱們再來看下IF ELSE語句的語法結(jié)構(gòu):
IF expression THEN
statements;
ELSE
else-statements;
END IF;
完事就來看IF ELSE語句的執(zhí)行過程:
我們?nèi)绻诙鄠€表達式有條件地執(zhí)行語句,則使用IF ELSEIF ELSE語句,它的語法結(jié)構(gòu)如下:
IF expression THEN
statements;
ELSEIF elseif-expression THEN
elseif-statements;
...
ELSE
else-statements;
END IF;
如果表達式(expression)求值為TRUE,則IF分支中的語句(statements)將執(zhí)行;如果表達式求值為FALSE,并且elseif_expression的計算結(jié)果為TRUE,mysql將執(zhí)行elseif-expression,否則執(zhí)行ELSE分支中的else-statements語句。咱們來看下具體的執(zhí)行過程:
咱們接下來使用IF ESLEIF ELSE語句和GetCustomerLevel()存儲過程接受客戶編號和客戶級別的兩個參數(shù)。首先這個GetCustomerLevel()存儲過程得先從customers表中獲得信用額度,完事呢,根據(jù)信用額度,它決定客戶級別:PLATINUM , GOLD 和 SILVER 。參數(shù)p_customerlevel存儲客戶的級別,并由調(diào)用程序使用,咱們來看下具體的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$$
確定客戶級別的邏輯的流程圖如下:
好啦,本次分享就到這里了。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
您可能感興趣的文章:- MySQL存儲過程的創(chuàng)建、調(diào)用與管理詳解
- MySQL存儲過程的查詢命令介紹
- MySQL存儲過程in、out和inout參數(shù)示例和總結(jié)
- MySQL修改存儲過程的詳細步驟
- Mysql 存儲過程中使用游標循環(huán)讀取臨時表
- Mysql修改存儲過程相關(guān)權(quán)限問題
- MySQL存儲過程的深入講解(in、out、inout)
- MySQL之存儲過程按月創(chuàng)建表的方法步驟
- 淺談MySql 視圖、觸發(fā)器以及存儲過程
- MySQL 存儲過程的優(yōu)缺點分析