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语句中,有很多的参数定义,作用于不同的范围,在本篇博客中进行介绍。