创建存储过程的语法格式:
create procedure 存储过程名(参数1,参数2.。。。。)
begin
//sql代码
end;
存储过程参数分为输入参数(in)、输出参数(out)、输入输出(output) 在参数不输入参数类型默认为输入(in)
如果存储中begin 和end 中只含有一条语句的以省略begin和end
说明:(1)存储过程中,可以有各种编程元素:变量,流程控制、函数调用
(2) 还可以有增删改查等mysql语句
(3)select(或show、或desc)会作为存储过程执行后的“结果集”返回;
(4)形参是可以设定数据的“进出方向的(既是参数为输入(in)、输出(out)、还是输入输出参数(output))”
创建简单的存储过程:
1、无参的语句的存储过程
create procedure p1()
begin
SELECT 'procedure_test';
end;
含有一条语句的也可以写成如下样式
create procedure p1()
SELECT 'procedure_test';
调用p1存储过程:call p1();
2、创建含有参数的存储过程
create procedure p2(a VARCHAR(30))
BEGIN
if a="yyyy" THEN
SELECT test.name,test.pwd from user_info where test.name=a;
ELSE
SELECT test.name,test.pwd from user_info AS test;
END if;
END;
调用储存过程
//设置传的参数值,将参数出入存储过程调用处
set @df="uu";
CALL p2(@df);
set @df="yyyy";
CALL p2(@df);
3、含有输出参数的存储过程:
create procedure p3(a INT,out b INT)
BEGIN
declare i int DEFAULT 1;//使用declare声明变量
aa:LOOP//sql中的循环 aa循环为标签
SET b=i+a;
IF b>a THEN
LEAVE aa;
END if;
END LOOP;
SELECT b;
END;
调用方式:
set @inParam=9;//设置输入参数
set @outParam=0;//设置输出参数的初始值
CALL p3(@inParam,@outParam);//调用存储过程传参数
SELECT @outParam;//查询存储过程结果