以下内容包含:
-
1,分支语句:【 条件结构:if … then … elseif … then … end;
分支结构:case … when … then … end case 】 -
2,循环语句:【 循环结构:repeat ; while ;循环跳出 】
存储过程:procedure
存储函数:function
内容:
—》数据库定义函数和存储过程 对指令集进行封装;
> 定义变量:
> #定义函数语句:create function 函数名 returns 数据类型(例如varchar(20))
> #定义存储过程语句:create procedure 存储过程名
调用函数: select 函数名 调用存储过程:call 存储过程名
#
定义变量语句:declare 变量名 变量数据类型(int) default(默认值);
循环语句1:while ... do ... 循环执行的语句 end while
循环语句2: repeat 循环执行的语句 until 结束条件 end repeat
循环语句3: loop 循环名字: loop
——》
循环执行语句
Leave loop 循环名字 ---跳出循环
end loop; -- loop循环名字
循环跳出:
iterate :只能出现在loop、repeat、while 语句中,用于开始下次循环,类似continue。
语法:iterate label
leave :通过制定的label 来退出流程控制块,如果label 是在最外面的程序块则退出该程序。可以在
begin...end 和循环结构中使用。相当于 break;
语法:leave label
——————案例:
分支语句: if ... then set =”值” elseif ... then set=’值’ else set=’值’ end if
例:
-- 定义函数
CREATE FUNCTION ifA(a int,b int) returns VARCHAR(20)
--开始
BEGIN
-- 定义变量
DECLARE s VARCHAR(20);
-- 分支判断
if a > b THEN
SET s =CONCAT(a,'>',b); -- concat 对字符串进行拼接
elseif a=b THEN
set s= '=';
else
set s= '<';
end if;
-- 返回 s 值
RETURN s;
END
-- 调用函数
SELECT ifA (1,1)
——————。。。。悲伤分割符
例: -- 定义函数 循环语句1:while.---循环添加100行数据
CREATE FUNCTION whileA () returns VARCHAR(20)
BEGIN
-- 定义变量
declare a INT default 0;
-- 循环判断
while a <100 DO
-- 循环执行的代码
INSERT INTO A values ('1','2','3');
-- 循环加1
SET a=a+1;
-- 结束循环
END WHILE;
return "返回值";
END;
调用whileA 函数
Select whileA ;
——————。。。。悲伤分割符
例: -- 定义存储过程--while循环
CREATE procedure whileB ()
BEGIN
-- 定义变量
declare a int default 0;
while a<100 do -- while 循环语句
insert into A values ('3','4','5'); -- 循环执行的语句
set a= a+1; -- 变量自增加1
end while; -- 结束循环
END
-- 调用 存储过程
call whileB();
————————。。。。悲伤分割符
定义存储过程 ---repeat 循环
CREATE procedure repeatA ()
BEGIN
-- 定义变量
set @a=0;
-- 循环结构 repeat
REPEAT
set @a=@a+1; -- 变量自增
INSERT INTO A values('1','2','3');-- 循环执行的语句
until @a>=5 end repeat; -- 结束循环
END
call repeatA;--调用存储过程repeatA
——————。。。。悲伤分割符
定义存储过程----- loop 循环
create procedure loopA ()
BEGIN
SET @a=0; -- 定义变量
myloopA:loop -- 循环结构语句
set @a=@a+1; -- 变量自增
INSERT INTO A values ('2','3','4'); -- 循环执行的语句
if @a>=10 THEN -- 判断什么时候跳出循环 ,避免死循环
leave myloopA; -- 跳出循环 leave 相当于 break
end if; -- 结束if 判断
END loop myloopA;
END
call loopA();