无参存储过程

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位置的参数,不能给常量,需要传自定义变量