-
流程控制結構有哪些
-
順序結構:從上到下順序執行;
-
分支結構:程序從一條或多條路徑中選擇一條去執行;
-
循環結構:在滿足一定條件下,重複去執行一段代碼;
-
-
分支結構
-
if函數
-
功能:實現簡單的雙分支;
-
語法: if(表達式1,表達式2,表達式3);
-
執行順序:如果表達式1成立,返回表達式2的結果,否則返回表達式3的結果;
-
應用:任何地方;
-
-
case結構
-
情況一:類似於java中的switch語句,一般用於等值判斷。
-
語法:
-
case 條件表達式 | 變量 | 字段
-
when 要判斷的變量1 then 返回的值或者語句1;
-
when 要判斷的變量1 then 返回的值或者語句2;
-
....
-
else 返回的值或者語句n;
-
end case;
-
-
demo:
-
-
-
SELECT
CASE parent_id
WHEN 0 THEN '00';
WHEN 1 THEN '11';
ELSE 'OTHERS';
END AS parent_id_new , parent_id , type_id , type_name
FROM tdb_goods_types;
-
情況二:類似於java中的多重IF語句,一般用於實現區間判斷。
-
demo:
-
SELECT
-
CASE
-
WHEN parent_id < 3 THEN '<3';
-
WHEN parent_id >= 3 AND parent_id < 5 THEN '>=3 && <5';
-
ELSE '>=5';
-
END AS parent_id_new ;
-
parent_id , type_id , type_name
-
FROM tdb_goods_types;
-
-
語法:
-
case
-
when 要判斷的條件1 then 返回的值或者語句1;
-
when 要判斷的條件2 then 返回的值或者語句2;
-
.....
-
else 返回的值或者語句n;
-
end case;
-
-
-
-
特點:
-
可以作爲表達式,嵌套在sql語句的任何地方(可以放在begin end中,也放在begin end 外),也可以作爲獨立語句去使用 (只能放在begin end中)。
-
demo:作爲獨立語句放在begin end中
-
CREATE PROCEDURE mycase1(in score float)
-
BEGIN
-
CASE
-
WHEN score >= 90 THEN SELECT 'A';
-
WHEN score >= 80 AND score <= 90 THEN SELECT 'B';
-
WHEN scoer >=70 AND score <= 80 THEN SELECT 'C';
-
ELSE SELECT 'D';
-
END case;
-
END $
-
-
-
順序執行,,滿足when的條件就執行then中的語句,跳出執行,如果都不滿足就執行else中語句,else可以省略,如果條件都不滿足就返回null。
-
-
-
if結構
-
功能:實現多重分支;
-
語法:
-
if 條件1 then 執行的語句1;
-
elseif 條件2 執行的語句2;
-
.....
-
else 執行的語句n;# else可以省略
-
end if;
-
-
應用場景:只能應用在begin end中
-
demo:根據輸入的數據,返回數據的級別CREATE FUNCTION test1(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 $
-
-
-
循環結構
-
分類:
-
while , loop, repeat
-
-
循環控制:
-
iterate :類似於 continue 結束本次循環 繼續下一次;
-
leave :類似於breake 跳出,結束循環;
-
-
語法:
-
while語法
-
[標記循環名:]while 循環條件 do
-
循環體;
-
end while 標記循環名;
-
-
loop語法 常用來模擬死循環
-
[標記循環名:]loop
-
循環體;
-
end loop [標籤名];
-
-
repeat 類似於do while
-
語法:
-
[循環名:]repeat
-
循環體;
-
until 結束循環的條件;
-
end repeat [標籤];
-
-
-
-