无参存储过程
fn 查询所有学生的数据
-- 定义fn存储过程,查询所有学生数据
DELIMITER $
CREATE PROCEDURE fn()
BEGIN
SELECT id,NAME,place,gender FROM student;
END $
CALL fn();
当前的功能是死数据
带一参的存储过程
fn2 接收一个学生的id 显示这个学生的数据
-- 定义fn存储过程,查询所有学生数据
DELIMITER $
CREATE PROCEDURE fn2(IN sid INT)
BEGIN
SELECT id,NAME,place,gender FROM student WHERE id = sid;
END $
CALL fn2('1');
带一参和一返回值的存储过程
fn3 接收一个id 返回对应学生的姓名
-- 定义fn3存储过程,根据id查学生姓名并返回
DELIMITER $
CREATE PROCEDURE fn3(IN sid INT,OUT sname VARCHAR(20))
BEGIN
SELECT NAME INTO sname FROM student WHERE id = sid;
END $
CALL fn3(5,@NAME);
SELECT @NAME;
inout类型的参数
fn4 接收id 返回攻击力的数据 打印这个攻击力
DELIMITER $
CREATE PROCEDURE fn4(INOUT num INT)
BEGIN
SELECT attack INTO num FROM student WHERE id = num;
END $
-- 因为常量2不能接收数据,把它改成变量的形式
SET @mynum = 1;
CALL fn4(@mynum);
SELECT @mynum;
小结
in 类型的形参 接收数据 收到后可直接使用
out 类型形参 返回数据 只需要对这个形参改值就可以返回 但是需要注意 调用的时候,out参数的位置,不能传常量,要传自定义变量
inout 类型的参数 接收数据用于相关操作 返回数据传给调用位置的实参 调用时候,inout位置的参数,不能给常量,需要传自定义变量