MySql儲存過程 5 邏輯判斷,條件控制

2021-06-08 16:02:46 字數 1756 閱讀 5575

同編寫程式類似,儲存過程中也有對應的條件判斷,功能類似於if、switch。在mysql裡面對應的是if和case

1、if判斷

if判斷的格式是這樣的:

if expression then commands

[elseif expression then commands]

[else commands]

end if;

這裡expression是我們的判斷表示式;else if 和else都是可選的;command就是當條件為真(true為1,false為0)時執行的命令。比如我們設計乙個儲存過程用於返回商品的**,這裡**通過傳入的引數來判斷是要帶稅收的**還是沒有帶稅收的**。先看看表的資料:

然後下面是我們的儲存過程:

儲存過程的話有兩個輸入引數,第乙個istaxed表示是不是要帶稅**,第二個是產品的名稱;在儲存過程裡面定義了兩個變數,finalprice用來儲存**,而taxrate表示稅率。這裡**比較簡單,就是判斷下如果是要加稅,就把原來的**乘上稅率。下面是測試結果:

true的情況表示是帶稅的**。好了這個是使用if的乙個例子,下面看看case;

2、case的使用

case  case_expression

when when_expression then commands

when when_expression then commands

...else commands

end case;

a、這裡可以看到case好比我們程式設計裡面的那個switch,後面的case_expression就好比switch後面跟著的表示式;

b、然後when則類似程式設計裡面的case,when_expression類似case後面跟著的值,commands則對應於相應的case下執行的命令;

c、最後乙個 else 則類似於default,就是如果都沒在上面那些when裡面的情況時執行的命令。

下面我們假設不同型別的商品對應的稅收稅率是不一樣的情況來看個例子,這裡假設甜點的稅率是0.05,奶製品的是0.1,家具類的是0.2:,下面是儲存過程:

上面增加了乙個儲存產品型別的乙個變數protype,用來儲存商品型別。然後使用case來進行判斷來設定稅率,下面是測試的部分:

可以看到沙發的**是1250*1.2=1500,而蛋糕的**是10*1.05 = 10.5

mysql 儲存過程(二) 邏輯判斷語句

一,if語句 if expr1,expr2,expr3 如果 expr1 是true expr1 0 and expr1 null 則 if 的返回值為expr2 否則返回值則為 expr3。if 的返回值為數字值或字串值,具體情況視其所在語境而定。select if sva 1,男 女 as ss...

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...