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