mysql高级进阶(存储过程)
1. 概念:
存储过程作用:一组为了完成特定功能的SQL语句集,在第一次使用经过编译后,再次调用就不需要重复编译,因此执行效率比较高。一次定义多次调用。
2.定义语法:
CREATE PROCEDURE 存储过程名([[ IN | OUT | INOUT ] 参数名称 参数类型])
BEGIN
过程体
END ;
语法说明:
- 存储过程设置参数时,在参数名前还可以指定参数的来源及用途,区别如下。
- IN:表示输入参数,即参数是在调用存储过程时传入到存储过程里面使用,输入参数前可省略IN。
- OUT:表示输出参数,初始值为NULL,它是将存储过程中的值保存到OUT指定的参数中,返回给
调用者。 - INOUT:表示输入输出参数,即参数在调用时传入到存储过程,同时在存储过程中操作之后,又可
将数据返回为调用者
调用语法
CALL [数据库名.]存储过程名称([实参列表]);
语法说明
- 实参列表传递的参数需要与创建存储过程的形参相对应
- 当形参被指定为IN时,则实参值可以为变量或是直接数据(如 10);
- 当形参被指定为OUT或INOUT时,调用存储过程传递的参数必须是一个变量,用于接收返回的数据
案例
1. 无参存储
例:编写存储过程,用于查询员工及所对应的职称
2. 输入参数的存储过程
例:查看某个职称的员工信息
例:根据参数显示分页内容
3. 输入输出参数的存储过程
注意:一个输出参数只能接收一个数据,如果存储过程查询时得到多个数据,则会发生“Result consisted of more than one row”的错误
例:查看某个职称最高的工资,得到工资,用于后
例:输出参数有多个,如查看某个职称最高的工资,平均工资,得到数据,用于后续计算