1. 程式人生 > 資料庫 >mysql儲存過程之if語句用法例項詳解

mysql儲存過程之if語句用法例項詳解

本文例項講述了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資料庫計有所幫助。