参数
| 类型 | 含义 | 备注 |
|---|---|---|
| IN | 该类参数作为输入,也就是需要调用时传入值 | 默认 |
| OUT | 该类参数作为输出,也就是该参数可以作为返回值 | |
| INOUT | 既可以作为输入参数也可以作为返回值 |
用法
CREATE PROCEDURE 存储过程名称 ([IN/OUT/INOUT 参数名 参数类型])
BEGIN
... -- SQL语句
END;
例子:传入学生成绩 score 判定当前学生成绩的等级并返回,大于等级 85 分优秀,大于等于 60 分及格,小于60分不及格
-- in score int 定义成绩入参
-- out result varchar(10) 定义成绩等级结果
-- 成绩等级结果不需要 select 和 return ,会直接返回
CREATE PROCEDURE compute_level (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 定义用户变量result来接收计算结果
call compute_level (67,@result);
-- 查看计算结果
select @result;
例子2:将200分制分数转换成100分制,然后返回分数。
-- 考虑到 计算会出现小数,将score 定义为double
CREATE PROCEDURE avg_score(inout score double)
BEGIN
set score := score / 2;
END;
-- 调用存储过程
set @score = 44; -- 设置分数变量
call avg_score(@score); -- 将分数变量传进去计算
select @score; -- 查看计算后的分数变量
注意:转载请携带文章源地址