数据库存储过程详解

1、概述

	概述:事先经过编译并存储在数据库中的一段sql语句的集合

	好处:(1)简化应用开发人员的很多工作
		 (2)减少数据在数据库和应用服务器之间的传输
		 (3)提高了数据的处理效率

2、创建与执行

语法(思想类似java的方法)
在这里插入图片描述

1、创建
	create procedure 存储过程名(参数列表)
	begin
		存储过程体(一组合法的sql语句)
	end

	注意:参数列表包含三部分:参数模式  参数名  参数类型 => in stuname varchar(20)
	参数模式:
	(1)in:可以作为输入
	(2)out:可以作为返回值
	(3)inout:既可以作为输入,也可以作为输出
	a、若存储过程只有一句sql语句的时候begin end可以省略
	b、每条sql语句结尾必须加分号
	c、存储过程结尾可以使用delimiter $ 充当结束
2、调用
	call 存储过程名(实参列表)
	
	例子:
		a、空参列表:插入五条数据
			(1)创建存储过程
				delimiter $ //使得$充当存储过程结束标志
				create procedure myp1()
				begin
					insert into b values(3,3),(4,4),(5,5),(6,6),(7,7);
				end $
			(2)调用存储过程
				call myp1() $
		b、创建带in模式参数的存储过程
			(1)创建存储过程
				delimiter $ //使得$充当存储过程结束标志
				create procedure myp2(in classnumber int)
				begin
					select * from student left join classes 
					on student.class_number = classes.id
					where student_number = classnumber;
				end $
			(2)调用存储过程
				call myp2(2) $ //注意如果是字符型的直接用''单引号导入即可
		c、创建带out模式参数的存储过程
			(1)创建存储过程
				delimiter $ //使得$充当存储过程结束标志
				create procedure myp3(in classnumber int,out id int)
				begin
					select student.id into id //这个into id 意思是把查询出来的结果赋值给参数id
					from student left join classes 
					on student.class_number = classes.id
					where student_number = classnumber;
				end $
			(2)调用存储过程
				首先声明变量:set @id $(也可以不声明直接下面那一步)
				接着:call myp3(2,@id) $
				查看:select @id $
		d、创建带inout模式参数的存储过程
			(1)创建存储过程
				delimiter $ //使得$充当存储过程结束标志
				create procedure myp4(inout a int,inout b int)
				begin
					set a *= 2;
					set b *= 2;
				end $
			(2)调用存储过程
				首先,声明变量
				set @m = 10 $
				set @n = 50 $
				其次,执行该存储过程
				call myp4(m,n) $
				查看
				select @m,@n $

3、删除

drop procedure 存储过程名

4、查看结构及信息

show create procedure 存储过程名

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coder陈、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值