数据库存储过程学习笔记(mysql操作)

数据库存储过程

存储函数名称	test()
自定义语句结束符号 delimiter $	--(替代语句中的;号,更好的区分)
存储过程开始及结束标识 begin.....end
给变量赋值 set @val=1;	--(@后面是变量名称)
定义变量 declare val int default 2;		--(val--变量名、int--数据类型、2--默认值)

1.创建存储过程–最简单的存储过程

delimiter $
create procedure test()
begin
	select * from test;
end$

–在sql实行界面调用存储过程
call test();

–删除存储过程
drop procedure if exists test()

2.创建可以传参数的存储过程–in 输入参数

delimiter $
create procedure in_test(in n int)
begin
	declare num int default 0;	--设置变量num默认为0
	declare total int default 0;	--设置变量total默认为0
	while num < n do	--循环num<输入的n的时候
	set num=num+1;		--设置num=num+1
	set total=total+num;		--总数=累加0....n
	end while;		--结束循环
	select total;	--查询总数
end$

call test(10)$ 		--total=55

3.创建可以传参数的存储过程–out输出参数

delimiter $
create procedure  out_test(in userId int,out nums int) 		--定义输入参数为userId,输出参数为nums
begin
	delete from user where id=userId;
	select count(id)  from user into nums; 		--将count(id)的值存入nums
end$
delimiter ;
call out_test(1,@nums); 	--调用存储过程
select @nums; 		--查看输出的值

多out输出参数

delimiter $
create procedure outs_test(in userId int ,out nums int,out username varchar(20)) 	--定义输入参数userId,输出参数nums,username
begin
	select name from user where id = userId into username; 		--name存入username
	delete from user where id = userId;
	select count(id) from user into nums; 		--将count(id)的值存入nums
end $
delimiter ;

call outs_test(3,@nums,@username); 		--调用存储过程
select @nums; 	--查看输出的值
select @username; 		--查看输出的值

4.创建可以传参数的存储过程–inout输入输出参数

delimiter $
create procedure inout_test( inout num int) 	--定义输入输出参数num
begin
	set num=num+10;
end$

--**由于参数是inout类型,所以需要传入一个赋值过的变量,以便在存储过程内部对其修改后返回。
set @num=3; 		--现给一个赋值
call square(@num); 	--调用存储过程
select @num;		--查询结果

参考链接: MySQL数据库-存储过程详解.

发布了2 篇原创文章 · 获赞 2 · 访问量 26

猜你喜欢

转载自blog.csdn.net/NcanKun/article/details/105418291