mysql数据库存储过程——筑梦之路

存储过程概念:

一组预编译好的sql语句集合,批处理语句。

  • 提高代码的重用性
  • 简化操作
  • 减少编译次数并且减少和数据库服务器连接的次数,提高效率

存储过程的创建:

create procedure 存储过程名([参数模式] 参数名 参数类型)

begin
    存储过程体
end
    
参数模式3种:

in: 作为输入,参数调用方需传入值

out:作为输出,参数可以作为返回值

inout: 既可作为输入也可以作为输出,参数调用方调用时传入值,又可以作为返回值

参数模式默认in

一个存储过程可以有多个输入,多个输出,多个输入输出参数

存储过程调用:
call 存储过程名称(参数列表);

关键字call

存储过程删除:
drop procedure [if exists] 存储过程名称;

存储过程只能一个个删除,不能批量删除

存储过程修改:
存储过程不能修改,若涉及到修改的,可以先删除,然后重建。

查看存储过程:
show create procedure 存储过程名称;
    可以查看存储过程详细创建语句

示例一 空参列表
创建存储过程:
/*设置结束符$*/
delimiter $
/*如果存储过程存在则删除*/
drop procedure if exists procl;
/*创建存储过程procl*/
create procedure procl()
    begin
        insert into t_user values (1,30,'路人甲');
        inset into t_user values (2,50,'刘德华');
    end $

/*将结束符置为;*/
delimiter ;

delimiter⽤来设置结束符,当mysql执⾏脚本的时候,遇到结束符的时候,会把
结束符前⾯的所有语句作为⼀个整体运⾏,存储过程中的脚本有多个sql,但是
需要作为⼀个整体运⾏,所以此处⽤到了delimiter。

调用存储过程:
call procl();

验证:select * from t_user;

示例二 参数in

创建存储过程:
delimter $
drop procedure if exists proc2;
create procedure proc2(id int,age int, in name varchar(16))
    begin
        insert into t_user values (id,age,name);
    end $
delimier ;

调用存储过程:
/*自定义变量*/
select @id:=3,@age:=56,@name='张学友';

call proce2(@id,@age,@name);

验证:select * from t_user;


示例三 参数out

创建存储过程:
/*如果存储过程存在则删除*/
DROP PROCEDURE IF EXISTS proc3;
/*设置结束符为$*/
DELIMITER $
/*创建存储过程proc3*/
CREATE PROCEDURE proc3(id int,age int,in name varchar(16),out
user_count int,out max_id INT)
BEGIN
INSERT INTO t_user VALUES (id,age,name);
/*查询出t_user表的记录,放⼊user_count中,max_id⽤来存储t_user中最⼩的id*/
SELECT COUNT(*),max(id) into user_count,max_id from t_user;
END $
/*将结束符置为;*/
DELIMITER ;
proc3中前2个参数,没有指定参数模式,默认为in。
调⽤存储过程:
/*创建了3个⾃定义变量*/
SELECT @id:=4,@age:=55,@name:='郭富城';
/*调⽤存储过程*/
CALL proc3(@id,@age,@name,@user_count,@max_id);

select @user_count,@max_id;


示例4:带inout参数的存储过程
创建存储过程:
/*如果存储过程存在则删除*/
DROP PROCEDURE IF EXISTS proc4;
/*设置结束符为$*/
DELIMITER $
/*创建存储过程proc4*/
CREATE PROCEDURE proc4(INOUT a int,INOUT b int)
BEGIN
SET a = a*2;
select b*2 into b;
END $
/*将结束符置为;*/
DELIMITER ;
调⽤存储过程:
/*创建了2个⾃定义变量*/
set @a=10,@b:=20;
/*调⽤存储过程*/
CALL proc4(@a,@b);
验证效果:
mysql> SELECT @a,@b;

上⾯的两个⾃定义变量@a、@b作为⼊参,然后在存储过程内部进⾏了修改,又
作为了返回值

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值