代码拉取完成,页面将自动刷新
函数类型 函数名(参数类型 参数名)
{
函数体;
}
1.创建存储过程
语法格式:
create procedure 存储过程名(参数…)
[begin]
存储过程体;
[end]
[注:如果没有参数,begin和end可以省略]
说明:
(1)参数:[in|out|inout] 参数名 参数类型
(2)需要在其他数据库中创建存储过程时,则要在名称前加上数据库的名称
格式为:数据库名.存储过程名
例一:创建存储过程delete_student,实现通过学号删除给定学生的信息。
create procedure delete_student(in xh char(6))
delete from xs where 学号 = xh;
delimiter $$
create procedure delete_student1(in xh char(6))
begin
delete from xs where 学号 = xh;
select * from xs;
end
2.调用存储过程
语法格式:
call 存储过程名(参数列表);
eg: call delete_student('081102');
call delete_student1('081216');
3.定义结束标记
语法格式:
delimiter 结束标记
eg: delimiter $$
4.局部变量
(1)定义(在存储过程内部执行!)
语法格式:
declare 变量1[,变量2,…] 数据类型 [默认值];
eg: declare num int(4);
declare str1,str2 char(4);
(2)赋值
set 变量名 = 表达式[, 变量名1 = 表达式1,……];
eg: set num = 50;
set str1 = 'good',str2 = 'study';
(3)使用select…into语句复制
select 字段名1,字段名2…
into 变量名1,变量名2,…
from 表名 where ……
例二:将xs表中学号为081101的学生姓名和专业名赋值给变量name和project
delimiter $$
create procedure fuzhi2(in xh char(6))
begin
declare name,project char(10);
select 姓名,专业名
into name,project
from xs where 学号 = '081101';
select name,project;
end
$$
delimiter ;
调用:
call fuzhi2('081101');
5.流程控制语句
(1) if语句
if 条件 then 语句1;
elseif 条件二 then 语句2;
else 语句n;
end if
例三:创建一个存储过程compar,判断任意两个数的大小
delimiter $$
create procedure compare(in x int,in y int,out max int)
begin
if x>y then set max=x;
elseif x<y then set max=y;
else set max=x
end if;
end
$$
delimiter ;
(2)case语句
语法格式:
case
when 条件一 then 语句1;
when 条件二 then 语句2;
……
else 语句n;
end case
语句格式二:
case 表达式
when 值1 then 语句1;
when 值2 then 语句2;
……
else 语句n;
end case
(3)循环语句
while 条件 do
循环体;
end while
例五:创建存储过程sum_pro,求1+2+3+……+100
delimiter $$
create procedure sum_pro(out sum int)
begin
declare i int (4);
set i = 1;
set sum = 0;
while i <=100
do set sum=sum+i;
set i=i+1;
end while;
end
$$
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。