当前位置:嗨网首页>书籍在线阅读

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)