数据库的存储过程

数据库的存储过程:存储过程是方法,有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名,有存储过程参数,也有返回值。
-- 1 无参数
//编写存储过程addresult1, 输出1+2+3+...+10的结果;
delimiter $$
create procedure addresult1()
begin
			declare i int;
			declare sum int;
			declare n int;
			set i = 1;
			set sum = 0;
			set n  = 10;
			while i <= n DO
					set sum = sum + i;
					set i = i + 1;
			end while;
			select sum ;
end
$$ 
delimiter ;
//用delimiter将语句分隔符定义为分号;注意delimiter之后需要加上一个空格;
call addresult1();


-- 2 有参数
//修改上面的存储过程addresult2, 使得n为输入参数, 其具体值由用户调用此存储过程指定
delimiter $$
create procedure addresult2(in n int )
begin
			declare i int;
			declare sum int;
			
			set i = 1;
			set sum = 0;
			
			while i <= n DO
					set sum = sum + i;
					set i = i + 1;
			end while;
			select sum ;
end
$$ 
delimiter ;
call addresult2(100);



-- 3有输入参数和输出参数
-- 用户变量需要以@开头, 用set@变量 = value赋值, 用select@变量显示值
delimiter $$
create procedure addresult3(in n intin m int , out sum int )
begin
		set sum = 0;
		while(n <= m) do
				set sum = sum + n;
				set n = n + 1;
		end while;
end
$$ 
delimiter ;
//调用存储过程, 计算10到20的所有的和, 结果165
set @sum = 0;
call addresult3(10, 20 , @sum);
select @sum;



//4,将n设置成为inout类型
delimiter $$
create procedure addresult4(inout n int )
begin
		declare i , sum  int;
		set i = 1;
		set sum = 0 ;
		while i <= n do
			set sum = sum + i;
			set i = i + 1;
		end while;
		set n = sum ;
end
$$ 
delimiter;

set @n = 15;
call addresult14(@n);
-- 这个单独运行才会有结果
select @n;
//结果是120,n 可以传递过去, 也可以传递出来






//eg
-- 创建一个存储过程, sp_student_info, 用于输入学号的学生基本信息

delimiter $$
create procedure sp_student_info(in s_sno char(9))
begin
	select sno , sname, ssex , sage
	from student
	where sno = s_sno;
end
$$ 
delimiter ;
-- 删除存储过程语句
-- drop procedure sp_student_info;

call sp_student_info("091001");

-- 查看存储过程
-- show procedure status\G;//把结果旋转90度
-- show procedure status\g;
-- show procedure status like "sp%"\G ;
//获取数据库中所有的名称, 以sp开头的存储过程的信息


-- 上面只能用于命令行,在navicat都不可运行

show create procedure sp_student_info\G;
-- 查看源代码
show procedure status like "sp%" ;

show create procedure sp_student_info;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海波东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值