MySQL的存储过程

本文详细介绍了MySQL存储过程中局部变量(如`var_name01`和`my_ename`)、全局变量(如`@global.sort_buffer_size`)的定义,以及不同类型的参数传递(in、out、inout)及其使用示例。
摘要由CSDN通过智能技术生成

MySQL的存储过程


本篇博客针对存储过程中的局部变量定义,全局变量定义以及存储过程中的参数传递问题

在SQL语句中,有很多的参数定义,作用于不同的范围,在本篇博客中进行介绍。

提示:以下是本篇文章正文内容,下面案例可供参考

调用存储过程

delimiter $$
create procedure proc01()
begin 
 select empno,ename from emp;
end $$
delimiter ;
-- 调用存储过程
call proc01(); 	

局部变量定义

方式一

delimiter $$
create procedure proc02()
begin 
 declare var_name01 varchar(20) default 'aaa';  
 set var_name01='zhangsan';
 select var_name01 ;
 end $$
 
 delimiter ;
 call proc02;

方式二

代码如下(示例):

delimiter $$
create procedure proc03()
begin 
 declare my_ename varchar(20);  
 select ename into my_ename from emp where empno =1001;
 select my_ename ;
 end $$
 
 delimiter ;
 call proc03;

用户变量

在当前链接中有效
 delimiter $$
create procedure proc04()
begin 
 set @vsr_name01='beijing';
 select @vsr_name01;
end$$
delimiter ;
call proc04;  

全局变量

全局变量(整个数据库有效)
show global variables;

-- 修改全局变量
set @@global.sort_buffer_size=40000;
select  @@global.sort_buffer_size;

会话变量

会话变量(当前链接有效)
show session variables;

-- 修改会话变量
set @@session.sort_buffer_size=40000;
select  @@session.sort_buffer_size;

传参

`

in

delimiter$$
create procedure proc06(in param_empno int)
begin 
  select *from emp where empno= param_empno ;
END$$
delimiter;

call proc06(1001)delimiter$$
create procedure proc07(in param_dname varchar(50),in param_sal decimal(7,2))
begin 
  select*from dept a join emp b where a.deptno=b.deptno and a.dname=param_dname and b.sal>param_sal;
end	$$
delimter;

call proc07('学工部',20000);

参数out

use  mysql7_procedure;
delimiter$$
 create procedure proc08(in in_empno int,out out_empno varchar(50))
begin 
 select ename into out_empno from emp where empno=in_empno;
end$$

delimiter;
call proc08(1001,@o_ename);

select @o_ename; 	






 use  mysql7_procedure;
delimiter$$
 create procedure proc09(in in_empno int,out out_empno varchar(50),out out_sal decimal(7,2))
begin 
 select ename,sal into out_empno,out_sal from emp where empno=in_empno;
end$$

delimiter;
call proc09(1001,@o_ename,@o_sal);

select @o_ename;
select @o_sal; 	

参数inout

既可以传入也可以修改
delimiter $$

create procedure proc10(inout num int )

begin 
  set num=num*10;
end $$
delimiter;

set @inout_num=2;
call proc10(@inout_num);

select @inout_num;	

总结

本篇博客针对存储过程中的局部变量定义,全局变量定义以及存储过程中的参数传递问题

在SQL语句中,有很多的参数定义,作用于不同的范围,在本篇博客中进行介绍。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值