创建存储过程
DELIMITER //
CREATE PROCEDURE usingid()
BEGIN
SELECT AVG(id)
FROM user;
END //
DELIMITER ;
要用DELIMITER //指定结束符为 "//",
要调用该存储过程:
CAll usingid;
创建成功后在navicat里面的函数界面可以看见刚刚创建的存储过程,(实际上就是封装了一个函数)
完整的使用带参数的存储过程的步骤
1. 创建存储过程时,在括号里面指定参数,参数类型有IN,OUT,INOUT
如果只是查询结果并输出而不需要过滤条件,用OUT
如果想查询某位学生的分数,就用IN定义一个参数用来传入该存储过程,用来过滤条件
定义参数: 参数类型 参数名
多个参数之间用逗号分隔
2.在BEGIN 和END 里面添加sql语句
将查询结果INTO进参数
如:
SELECT MAX(mathscore)
INTO math_max
FROM student;
3. 调用该存储过程: CALL 存储过程名 ( @参数名1 , @参数名2 , @参数名3 ),创建时有几个参数,这里就必须有几个参数,自己取名字;还有千万不要忘记@
4.直接查询对应参数即可: SELECT @参数名1
完整代码:
DELIMITER//
CREATE PROCEDURE scoreproce(
OUT math_max DECIMAL(8,2),
OUT english_min DECIMAL(8,2),
OUT age_avg DECIMAL(8,2)
)
BEGIN
SELECT MAX(mathscore)
INTO math_max
FROM student;
SELECT MIN(english)
INTO english_min
FROM student;
SELECT AVG(age)
INTO age_avg
FROM student;
END//
CAll scoreproce(@p1,@p2,@p3);
SELECT @p1;
SELECT @p2;
SELECT @p3;