MySQL数据库-存储过程-参数

爱丽思 25天前 ⋅ 100 阅读

参数

类型含义备注
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;   -- 查看计算后的分数变量