05-存储过程的调用
9.3.1 存储过程的调用
CALL语句调用一个使用CREATE PROCEDURE创建好的存储过程,基本语法如下。
CALL sp_name([parameter[,...]])
CALL调用语句中的sp_name 为存储过程名称,parameter 为存储过程的参数。
【范例9-4】
创建存储过程,查询某个部门的平均年龄,然后调用该存储过程。
mysql> delimiter // mysql> create procedure avg_emp(in deptno int,out avgage float) -> begin -> select avg(empage)into avgage -> from emp -> where dno=deptno; -> end//
以上代码创建了存储过程avg_emp,该存储过程有两个参数,deptno 为输入参数,存放待查看的部门编号,avgage为输出参数,存放待查看的部门雇员的平均年龄。
mysql> call avg_emp(1,@aa)
使用CALL语句调用了avg_emp存储过程,在该调用语句中的括号中的“1”这个数值赋值给了存储过程中的输入参数deptno,即查询部门编号为1的雇员的平均年龄。然后执行存储过程中的语句,这时存储过程中的语句就变成执行如下程序。
select avg(empage) into avgage from emp where dno=1
该语句执行得到的avg(empage)通过SELECT…INTO语句赋值给了输出参数avgage。
查看调用的结果如下。
mysql> select @avg// +-------------------+ |@avg | +-------------------+ | 34.33333206176758 | +-------------------+ 1 row in set (0.00 sec)