🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️
本博客致力于分享知识,欢迎大家共同学习和交流。
SQL函数
格式
create function 函数名(参数名 数据类型,参数名 数据类型,......)
returns 返回值类型
begin
函数语句1
函数语句2
.........
end
注意事项
SQL函数 函数体语句以;结尾,但是编译器会误认为这是函数的结尾,所以我们需要修改结束标记。
修改方式:delimiter 新的结束标记。
函数创建完成后,需要将结束标记修改回来。
#创建函数
drop function if exists myadd;
delimiter //
create function myadd(a int ,b int)
returns int
begin
declare c int default 0;
set c=a+b;
return c;
end //
delimiter ;
调用函数
select myadd(3,5);
删除函数
drop function if exists 函数名;
函数如果存在则删除函数。若是没有if exists,函数不存在会执行失败。
变量
局部变量
函数内的变量,生命周期是函数开始到函数结束
会话变量
语法:@变量名;
set @a=10;
select @a;
生命周期:开始一次会话后,到会话结束。
不仅可以在设置会话变量的sql文件内查看变量的值,在其他sql文件内也可以查看。
结束会话后再次查看试试:
可以发现,变量的值是空。说明其生命周期在会话开始到结束。
系统变量
系统变量也叫做全局变量,包含数据库提前配置的系统参数。
查看系统变量的方式:show global variables;
不要轻易修改系统变量,否则可能会引起程序崩溃。
判断语句
if判断
语法:
if(表达式) then 执行语句1;执行语句2;执行语句3;
elseif (表达式) then 执行语句1;执行语句2;执行语句3;
else 执行语句;
end if;
例如:使用if判断创建一个函数,判断输入的值是正数、负数还是零。
drop function if exists myfun;
delimiter //
create function myfun(n int)
returns varchar(45)
begin
declare res varchar(45) default '';
if(n>0) then set res ='正数';
elseif(n=0) then set res='零';
else set res='负数';
end if;
return res;
end //
delimiter ;
case选择判断
语法:
1、
case 变量 when 值1 then 执行语句1;执行语句2;
when 值2 then 执行语句1;执行语句2;
when 值3 then 执行语句1;执行语句2:
end case;
2、
case when 表达式1 theni执行语句;
when 表达式2 then 执行语句;
when 表达式i then 执行语句;
同样的,用case选择创建一个函数,判断一个数是否是负数
drop function if exists myfun;
delimiter //
create function myfun(n int)
returns varchar(45)
begin
declare res varchar(45) default '';
case when (n>0) then set res ='正数';
when (n=0) then set res='零';
when (n<0) then set res='负数';
end case;
return res;
end //
delimiter ;
循环
循环:while循环
语法:
while 条件
do
end while;
例:编写一个循环函数,计算1+2+3+...+n
drop function if exists mysum;
delimiter //
create function mysum(n int)
returns int
begin
declare nSum int default 0;
declare i int default 1;
while i<=10
do
set nSum=nSum+i;
set i=i+1;
end while;
return nSum;
end //
delimiter ;
select mysum(10);
其他循环:没有for循环,有loop和repeat循环