您好,登錄后才能下訂單哦!
本文實例講述了mysql存儲過程之if語句用法。分享給大家供大家參考,具體如下:
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$$
確定客戶級別的邏輯的流程圖如下:
好啦,本次分享就到這里了。
更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL數據庫鎖相關技巧匯總》
希望本文所述對大家MySQL數據庫計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。