您的位置:首页 > 数据库 > MySQL

mysql存储过程简单用法

2018-01-05 00:53 344 查看
show procedure status 查看所有存储过程

<!--  简单存储过程  -->

先将结束符改成//

delimiter //

create procedure query(page int)
beginselect * from class where id > page;

end//

将结束符改回;

delimiter ;

<!--  调用存储过程  -->

call query(20)

<!--  删除存储过程  -->

drop procedure query

<!--  会话变量的使用  -->

SET @age=10;

select @age;

<!--  声明一个输出参数的存储过程  -->

delimiter //

 create procedure pro(out str varchar(20))

 begin

 set str="测试";

 end%

delimiter ;

CALL PRO(@NAME);  <!--  调用存储过程  -->

SELECT @NAME;     <!--  获得数据  -->

<!--  声明一个输入 / 输出参数的存储过程  -->

delimiter //

 create procedure xx(inout n int)

 begin
select n;
<!--  此时n是局部变量  -->
set n=500;

 end//

delimiter ;

set @n=10;

call xx(@n); <!--  打印10  -->

select @n <!--  打印500  -->

查看全局变量

SHOW GLOBAL VARIABLES;  

设置全局变量

SET GLOBAL max_allowed_packet=53687091200;  

带条件判断的存储过程

delimiter $
create procedure testIf(in num int,out str varchar(20))

begin 
if num = 1 then 
set str = '星期一';

if num = 2 then 
set str = '星期二';
else
set str = '星期一';
end if;

end $

定义一个循环,求1-100的和

delimiter $
create procedure testWhile(in num int,out result int)

begin
-- 定义一个局部变量
declare i int default 1;
declare vsum int default 0;
while i<num do
set vsum = vsum + i;
set i = i + 1;
end while;
set result = vsum;

end $

call testWhile(100,@result);

select @result;

into 的使用,将查询结果作为返回值

delimiter $
create procedure findByID(in eid int,out vname varchar(20))

begin
select empName into vname from employee where id = eid;

end $

call findByID(1,@name);

select @name;

<!--  修改数据  -->

<!--  插入数据  -->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: