存储过程
存储过程是一组命名的SQL语句的集合(匿名过程除外),可以从一个程序、触发器或者另一个存储过程调用它从而激活它。
每个存储过程包含至少3部分:过程名称,参数列表,SQL语句。
存储过程在数据库的名字必须是唯一,不能有同名过程,通过参数列表与外界沟通。
存储过程支持 3中参数类型 :1、输入参数IN:数据可以传递到存储过程;
2、输出参数OUT:数据可以由存储过程传到外界(需要先定义变量,set @tmp := xxx;);
3、输入\输出参数INOUT:既可以充当输入参数,也可以充当输出参数。
变量定义:
declare arge type [default value];
例如: declare age int default 0;
create procedure pd1(in age int, out msg varchar(10))
begin
declare tmp int default 10;
if age > tmp then
select '大于' into msg; #<span style="color:#000099;">select ... into ... 将结果存入变量</span>
elseif age = tmp then #<span style="color:#000099;">elseif 中间没有空格,判断条件后还得+then</span>
select '相等' into msg;
else
select '小于' into msg;
end if;
end$
mysql> delimiter $ #
修改默认语句结束符
mysql> set @msg := '' $ #定义用户变量,用‘:=’为了与SQL语句中的赋值=区分
mysql> call pd1(1, @msg)$ #调用存储过程
mysql> select @msg$ #获取结果
控制语句:
if 语句
格式:
if 条件 then 语句 ;
elseif 条件 then 语句;
esle 语句;
end if
case语句
格式:case
when 条件 then 语句;
when 条件 then 语句;
else 语句;
end case;
while 语句
格式:
while 条件 do
语句;
end while;