数据库的存储过程
一、定义
存储过程是一种数据库对象,它封装了一组 SQL 语句和逻辑操作,可以通过调用存储过程来执行这些操作。
理解:类似于函数
注意:存储过程必须调用,才有用!!!
好处:减少代码的冗余
二、最简单的存储过程(无传入参数无返回参数的存储过程)
delimiter xx
CREATE PROCEDURE pro01()
BEGIN
SELECT * FROM student;
SELECT * FROM course;
SELECT * FROM class;
END xx
delimiter ;
# 调用存储过程
CALL pro01();
参数类别:in – 传入参数, out – 传出参数, inout – 传入传出参数
三、需求一
需求:创建存储过程,传入id,查询出该学生的信息
delimiter xx
CREATE PROCEDURE pro02(IN s_id INT) # s_id叫做形式参数(形参) ,形参必须规定类型
BEGIN
SELECT * FROM student WHERE id=s_id;
END xx
delimiter ;
# 调用存储过程
CALL pro02(1); # 2叫做实际参数(实参),实参表示传入的具体数据,实参最好和形参的类型一致
四、需求二
需求:创建存储过程,传入id,传出学生的姓名
delimiter xx
CREATE PROCEDURE pro03(IN s_id INT,OUT s_name VARCHAR(32))
BEGIN
SELECT name INTO s_name FROM student WHERE id=s_id;
END xx
delimiter ;
# 调用存储过程
CALL pro03(1,@s_name);
SELECT @s_name;
五、需求三
需求:创建存储过程,传入id,传出学生的年龄
注意:传入参数和传出参数的类型是一样的,就可以将二者合并(INOUT)
delimiter xx
CREATE PROCEDURE pro04(INOUT param INT)
BEGIN
SELECT age INTO param FROM student WHERE id=param;
END xx
delimiter ;
# 调用存储过程
set @param = 2; # 声明一个变量
CALL pro04(@param);
SELECT @param;
六、删除存储过程
DROP PROCEDURE pro01;
DROP PROCEDURE pro02;
DROP PROCEDURE pro03;
DROP PROCEDURE pro04;