MySQL 8.0 参考手册  / 第25章存储对象  /  23.2 使用存储例程

23.2 使用存储例程

MySQL 支持存储例程(过程和函数)。存储例程是一组可以存储在服务器中的 SQL 语句。完成此操作后,客户无需继续重新发出单独的语句,而是可以参考存储的例程。

存储例程需要数据库proc中的表 mysql。该表是在 MySQL 安装过程中创建的。如果您要从早期版本升级到 MySQL 5.7,请务必更新您的授权表以确保该proc表存在。请参阅第 4.4.7 节,“mysql_upgrade — 检查和升级 MySQL 表”

存储例程在某些情况下特别有用:

  • 当多个客户端应用程序用不同的语言编写或工作在不同的平台上,但需要执行相同的数据库操作时。

  • 当安全至上时。例如,银行将存储过程和函数用于所有常见操作。这提供了一个一致且安全的环境,并且例程可以确保正确记录每个操作。在这样的设置中,应用程序和用户将无法直接访问数据库表,而只能执行特定的存储例程。

存储例程可以提供改进的性能,因为在服务器和客户端之间需要发送的信息更少。代价是这确实会增加数据库服务器的负载,因为更多的工作是在服务器端完成的,而在客户端(应用程序)端完成的更少。如果许多客户端计算机(例如 Web 服务器)仅由一个或几个数据库服务器提供服务,请考虑这一点。

存储例程还使您能够在数据库服务器中拥有函数库。这是现代应用程序语言共享的一个功能,可以在内部启用此类设计(例如,通过使用类)。即使在数据库使用范围之外,使用这些客户端应用程序语言功能对程序员也是有益的。

MySQL 遵循存储例程的 SQL:2003 语法,IBM 的 DB2 也使用该语法。支持此处描述的所有语法,并在适当的地方记录任何限制和扩展。

其他资源