介绍
参数的类型,主要分为以下三种:IN、OUT、INOUT。 具体的含义如下:
类型 | 含义 | 备注 |
---|---|---|
IN | 该类参数作为输入,也就是需要调用时传入值 | 默认 |
OUT | 该类参数作为输出,也就是该参数可以作为返回值 | |
INOUT | 既可以作为输入参数,也可以作为输出参数 |
用法:
CREATE PROCEDURE 存储过程名称 ([ IN/OUT/INOUT 参数名 参数类型 ])
BEGIN
-- SQL语句
END ;
案例一
根据传入参数score,判定当前分数对应的分数等级,并返回。
- score >= 85分,等级为优秀。
- score >= 60分 且 score < 85分,等级为及格。
- score < 60分,等级为不及格。
create procedure p4(in score int, out result varchar(10))
begin
if score >= 85 then
set result := '优秀';
elseif score >= 60 then
set result := '及格';
else
set result := '不及格';
end if;
end; -- 定义用户变量 @result 来接收返回的数据, 用户变量可以不用声明
call p4(18, @result); -- 里面需要指定两个参数,一个参数是score分数,第二个代表的是我需要将执行的返回值返回
select @result;
创建的存储过程如下图,默认是in,因此in不会展示,而out会展示
![image-20240719172251415](https://img-blog.csdnimg.cn/img_convert/47fcce60d26974b863d665bf2e603623.png)
案例二
将传入的200分制的分数,进行换算,换算成百分制,然后返回。
分析:这个参数应该即是传入的参数又是传出的参数
create procedure p5(inout score double)
begin
set score := score * 0.5;
end;
set @score = 198;
call p5(@score); -- 这里不能直接传入198,不然就拿不到返回值了,因此这里也需要定义成一个变量,并且需要给这个变量提前赋值;然后再去调用这个存储过程,调用完毕后,它会将计算完成之后结果再次赋值给@score用户自定义变量
select @score;
创建的存储过程如下图,INOUT,即是输入又是输出