MySql存儲進程之邏輯斷定和前提掌握。本站提示廣大學習愛好者:(MySql存儲進程之邏輯斷定和前提掌握)文章只能為提供參考,不一定能成為您想要的結果。以下是MySql存儲進程之邏輯斷定和前提掌握正文
詳細概況請看下文小編給年夜家帶來的常識點。
同編寫法式相似,存儲進程中也有對應的前提斷定,功效相似於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的應用
同編程外面的誰人switch ....case.....相似,應用CASE同編程一樣也是當斷定比擬多時便於浏覽和保護,我們也來看下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