MySQL 支持存储例程(过程和函数)。存储例程是一组可以存储在服务器中的 SQL 语句。完成此操作后,客户无需继续重新发出单独的语句,而是可以参考存储的例程。
存储例程需要数据库proc
中的表
mysql
。该表是在 MySQL 安装过程中创建的。如果您要从早期版本升级到 MySQL 5.6,请务必更新您的授权表以确保该proc
表存在。请参阅第 4.4.7 节,“mysql_upgrade — 检查和升级 MySQL 表”。
存储例程在某些情况下特别有用:
当多个客户端应用程序用不同的语言编写或工作在不同的平台上,但需要执行相同的数据库操作时。
当安全至上时。例如,银行将存储过程和函数用于所有常见操作。这提供了一个一致且安全的环境,并且例程可以确保正确记录每个操作。在这样的设置中,应用程序和用户将无法直接访问数据库表,而只能执行特定的存储例程。
存储例程可以提供改进的性能,因为在服务器和客户端之间需要发送的信息更少。代价是这确实会增加数据库服务器的负载,因为更多的工作是在服务器端完成的,而在客户端(应用程序)端完成的更少。如果许多客户端计算机(例如 Web 服务器)仅由一个或几个数据库服务器提供服务,请考虑这一点。
存储例程还使您能够在数据库服务器中拥有函数库。这是现代应用程序语言共享的一个功能,可以在内部启用此类设计(例如,通过使用类)。即使在数据库使用范围之外,使用这些客户端应用程序语言功能对程序员也是有益的。
MySQL 遵循存储例程的 SQL:2003 语法,IBM 的 DB2 也使用该语法。支持此处描述的所有语法,并在适当的地方记录任何限制和扩展。
其他资源
在使用存储过程和函数时,您可能会发现使用存储过程用户论坛。
有关 MySQL 中存储例程的一些常见问题的答案,请参阅第 A.4 节,“MySQL 5.6 FAQ:存储过程和函数”。
存储例程的使用有一些限制。请参阅 第 20.8 节,“对存储程序的限制”。
存储例程的二进制日志记录发生在 第 20.7 节,“存储程序二进制日志记录”中。