【版權(quán)聲明】未經(jīng)博主同意,謝絕轉(zhuǎn)載?。ㄕ堊鹬卦瓌?chuàng),博主保留追究權(quán))
https://www.cnblogs.com/cnb-yuchen/p/17991087
出自【進步*于辰的博客】
參考筆記三,P32.5。
-
1、選擇語句
- 1.1 if
-
1.2 case
- 1.2.1 形式一
- 1.2.2 形式二
-
2、循環(huán)語句
- 2.1 while
- 2.2 repeat
- 2.3 loop
- 最后
用于測試的數(shù)據(jù)表:
![[MySQL]流程控制語句](https://imgs.yssmx.com/Uploads/2024/02/825173-1.jpeg)
1、選擇語句
需求:輸入員工名emp_name
,獲取部門id
對應的部門名稱。
1.1 if
格式:
if 條件1 then 語句1 elseif 條件2 then 語句2 else 語句3 end if;
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name;
IF deptId = 1 THEN
select '開發(fā)部' from dual;
ELSEif deptId = 2 THEN
select '策劃部' from dual;
else
select '其他部門' from dual;
END IF;
END
測試:
測試結(jié)果:
1.2 case
1.2.1 形式一
格式:
case when 條件1 then 語句1 when 條件2 then 語句2 else 語句3 end case;
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name;
case
when deptId = 1 THEN
select '開發(fā)部' from dual;
when deptId = 2 THEN
select '策劃部' from dual;
else
select '其他部門' from dual;
END case;
END
1.2.2 形式二
格式:
case 參數(shù) when 值1 then 語句1 when 值2 then 語句2 else 語句3 end case;
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name;
case deptId
when 1 THEN
select '開發(fā)部' from dual;
when 2 THEN
select '策劃部' from dual;
else
select '其他部門' from dual;
END case;
END
2、循環(huán)語句
需求:輸入一個數(shù)n,計算1 ~ n
的總和。
2.1 while
格式:
while 結(jié)束條件 do 語句 end while;
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0;
while n > 0
do
set sum = sum + n;
set n = n - 1;
end while;
select sum;
END
測試:
測試結(jié)果:
2.2 repeat
格式:
repeat 語句 until 結(jié)束條件 end repeat;
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0;
REPEAT
set sum = sum + n;
set n = n - 1;
UNTIL n < 0 end REPEAT;
select sum;
END
2.3 loop
格式:
xx:loop if 條件1 then [leave xx;] end if; if 條件2 then [iterate xx;] end if; end loop xx
// leave類似break(必須有,作為循環(huán)終止);iterate類似continue。
示例:
CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0;
calSum: loop
if n < 0 then
leave calSum;// leave 類似于 break
end if;
set n = n - 1;
if n = 5 then
iterate calSum;// iterate 類似于 continue
end if;
set sum = sum + n;
end loop calSum;
select sum;
END
當n < 0
時,循環(huán)結(jié)束;當n = 5
時,跳過此次循環(huán)。當然,這個例子的測試結(jié)果不是55。
最后
本文中的例子是為了方便大家了解MySQL流程控制語句的格式及使用而簡單舉例的,不一定有實用性。
如果大家想要了解存儲過程,可查閱博文《[MySQL]關(guān)于存儲過程的理解與簡述》。文章來源:http://www.zghlxwxcb.cn/news/detail-825173.html
本文完結(jié)。文章來源地址http://www.zghlxwxcb.cn/news/detail-825173.html
到了這里,關(guān)于[MySQL]流程控制語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!