MySQL存储过程

1.存储过程简介

是一组为了完成特定功能的SQL语句集合
比传统的SQL速度更快,执行效率更高
存储过程的优点:

  • 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  • SQL语句加上控制语句的集合,灵活性高
  • 在服务器端存储,客户调用时,降低网络负载
  • 可多次重复被调用,可随时修改,不影响用户端调用
  • 可完成所有的数据库操作,也可控制数据库的信息访问权限

2.创建存储过程

使用CREATE PROCEDURE语句创建存储过程
创建存储过程的语法结构

create procedure <过程名>([过程参数[...]])<过程体>

[过程参数[...]]格式
[IN|OUT|INOUT] <参数名> <类型>
#输入参数:IN
#输出参数:OUT
#输入/输出参数:INOUT

存储过程的主体部分,被称为过程体
以BEGIN开始,以END结束,若只有一条SQL语句,则可以省略BEGIN-END
以DELIMITER开始和结束

delimiter $$	#表示自定义结束符为$$
begin
...
end $$
delimiter ;		#表示结束符改为;

2.1创建存储过程示例

1.不带参数

use aa;
delimiter $$	#将结束符号设为$$
create procedure chengji()	#存储过程名为chengji,不带参数
begin	#存储过程开始
select id,name,score from aa;
end $$		#存储过程结束
delimiter ;		#将结束符号设为;
call chengji();		#执行chengji过程

2.附带过程参数参数

use aa;
set @id1=1,@id2=2,@id3=3;
delimiter $$
create procedure i(in id1 int(3),out id2 int(3),inout id3 int(3))
begin
select id1,id2,id3;
set id1=10,id2=20,id3=30;
select id1,id2,id3;
end $$
delimiter ;

call i(@id1,@id2,@id3);
id1=1,id2=null,id3=3	#out参数的值查询不到
id1=10,id2=20,id3=30	#三个参数的值都查询到了
select @id1,@id2,@id3;
id1=1,id2=20,id3=30		#in参数的值在存储过程外的查询时查不到
##总结:in参数不会对全局变量的值引起变化,out参数不会将全局变量的值传入存储过程中,inout参数结合了两者,既会对全局变量的值引起变化,也会将全局变量的值传入存储过程。
##in参数赋值类型可以是变量还有定值,而out和inout参数赋值类型必须是变量

3.删除存储过程

##语法
drop {procedure | function}[if exists]<过程名>
##if exists:防止因删除不存在的存储过程而引发错误
##示例
drop procedure i;	#删除存储过程
call i;		#查看该存储过程,确认删除
error...		#报错,表示无该存储过程,删除成功

4.修改存储过程

存储过程的修改分为特征修改和内容修改
特征修改方法:

alter procedure <过程名>[<特征>...]

内容修改可先删除原有存储过程,之后再创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值