一、存储过程参数的应用
存储过程可以有0个、1个或多个参数。
MySQL存储过程支持三种类型的参数:
输入参数 IN:输入参数使数据可以传递给一个存储过程。
输出参数 OUT:当需要返回一个答案或结果的时候,存储过程使用输出参数。
输入输出参数 INOUT:输入\输出参数既可以充当输入参数也可以充当输出参数。
存储过程可以不加参数,但是名称后面的括号是不可以省略的。
注意:参数的名字不要等于列的名字,否则虽然不会返回出错信息,但是存储过程中的SQL语句会将参数的名看做列名,从而引发不可预知的结果。
1)IN 输入形参参数的使用
set @x=3;
select @x;
调用必须有对应的实参(类型、数量)将信息带入到存储过程
create procedure p10(IN para1 int) set @x=para1;
create procedure p10(para1 int) set @x=para1;
call p10(18);
select @x;
2)用户定义变量:声明开始set @x=3;
到断开连接结束
不能和其他用户共享
3)OUT 输出形参的使用
用一个变量(实参位置)保存存储过程中返回的结果
create procedurep14(OUT para1 int)
begin
set para1=10;
end//
错误的:
call p14(x);
select x;
正确的:
call p14(@x);
select @x;
二、流程控制结构
1)分支结构
语法:
IF 条件1 THEN 语句集合
{ELSEIF 条件2 THEN 语句集合}
{ELSE 语句集合}
END IF;
注意:
形参中的变量如果和存储过程中的局部变量同名,会“覆盖”;
2)循环结构:
While….END WHILE
LOOP…END LOOP
REPEAT…END REPEAT