MySQL(11)—存储过程和函数

存储过程和函数

1. 什么是存储过程和函数

存储过程和函数: 事先经过编译并存储在数据库中的一段sql语句的集合。

2. 使用存储过程和函数的好处

使用好处:
1、简化应用开发人员的很多工作
2、减少数据在数据库和应用服务器之间的传输
3、提高了数据处理的效率

3. 创建存储过程和函数

  • 创建存储过程:

    1
    2
    create procedure 存储过程名 ([proc_parameter[,…]])
    [characteristic…]routine_body
  • 创建函数

    1
    2
    3
    create function 函数名([func_parameter[,…]])
    returns type
    [characteristic…]routine_body
  • proc_parameter: [in|out|inout] param_name type

  • Func_paramter: param_name type

  • Type: 任何有效的mysql数据类型

  • Characteristic:

    language sql(默认,且推荐)

    |[not] deterministic

    |{contains sql|no sql

    ​ |reads sql data

    ​ |modifies sql data}

    |sql security{definer|invoker}

    |comment ‘string’

  • Rountine_body: 有效的sql 过程语句

4. 修改存储过程和函数

  • 修改存储过程: alter procedure 存储过程名 [charactristic…]

  • 修改函数: alter function 函数名 [charactristic…]

    characteristic:

    ​ {contains sql|no sql|reads sql data|modifies sql data}
    ​ |sql security{definer|invoker}
    ​ |comment ‘string’

5. 调用存储过程和函数

• 调用存储过程: call 存储过程名(参数列表)

• 调用函数: Select 函数名(参数列表)

案例

  • 查询员工名为king的所有记录
  • 根据输入的员工名,查询部门名
  • 根据指定的员工编号,返回工资
  • 根据指定的员工编号,返回工资和部门号
  • 将输入的a和b都翻倍并返回

6. 修改存储过程或函数

说明:一次只能删除一个存储过程或者函数,并且要求有该 过程或函数的alter routine 权限 删除存储过程: drop procedure [if exists] 存储过程名
删除函数: drop function [if exists] 函数名

7. 查看存储过程和函数

  1. 查看存储过程或函数的状态:

    show {procedure|function} status like 存储过程或函数名

  2. 查看存储过程或函数的定义:

    show create {procedure|function} 存储过程或函数名

  3. 通过查看information_schema.routines了解存储过程和函数的 信息(了解)

    select * from rountines where rounine_name =存储过程名|函数名