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;
<!– 修改数据 –>
<!– 插入数据 –>