25-mysql--流程控制結構

分類

順序結構:程序從上往下依次執行
分支結構:程序從兩條或多條路徑中選擇一條去執行
循環結構:程序在滿足一定條件的基礎上,重複執行一段代碼

分支結構

1 if 函數
功能:實現簡單的雙分支
語法:

if(表達式1,表達式2,表達式3)
執行順序:如果1成立,則返回2的值,否則返回3的值

2 if 結構:只能放在begin end結構中
功能:實現多重分支

語法:
if 條件1 then 語句1;
else if 條件2 then 語句2;
...
[else 語句n;]
end if;

案例:根據傳入的成績劃分等級
CREATE FUNCTION test_if(score INT) RETURNS CHAR
BEGIN
	IF score>=90 AND score<=100 THEN RETURN 'A';
	ELSEIF score>=80 THEN RETURN 'B';
	ELSEIF score>=70 THEN RETURN 'C';
	ELSE RETURN 'D';
	END IF
END $

3 case結構
特點:
1 可以作爲表達式,嵌套在其他語句中使用,可以放在任何地方,begin end中或begin end 外;
作爲獨立的語句去使用時,只能放在begin end中;
2 如果when中的值滿足條件,則執行對應的then後面的語句,並結束case;
如果都不滿足,則執行else中的語句或值;
else可以省略,如果else省略,且所有when條件都不滿足,則返回null

語法:

情況一:類似C#或java中switch
case 變量|表達式|字段
	When 要判斷的值 Then 返回的值1
	when 要判斷的值 Then 返回的值2
	...
	else 返回的值n
End

情況二:類似C#或java中多重if語句
語法:
Case
	When 要判斷的條件1 Then 返回的值1或語句1;
	When 要判斷的條件2 Then 返回的值2或語句2;
	...
	else 要返回的值n或語句n;
End Case;

案例:

創建存儲過程,根據傳入的成績,來顯示等級,比如傳入的成績:90-100,顯示A...
CREATE PROCEDURE test_case(IN score INT)
BEGIN
	CASE 
	WHEN score >=90 AND score<=100 THEN SELECT 'A';
	WHEN score>=80 THEN SELECT 'B';
	WHEN score>=70 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;
END $
CALL test_case(98)$
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章