6/5~6/6总结

创建存储过程

DELIMITER //
CREATE PROCEDURE usingid()
BEGIN
SELECT AVG(id)
FROM user;
END //
DELIMITER ;

要用DELIMITER //指定结束符为  "//",

要调用该存储过程:

CAll  usingid;

6/5~6/6总结_第1张图片

创建成功后在navicat里面的函数界面可以看见刚刚创建的存储过程,(实际上就是封装了一个函数)

6/5~6/6总结_第2张图片

完整的使用带参数的存储过程的步骤

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;

你可能感兴趣的:(sql,数据库)