Spec-Zone.ru › MySQL 5.7

23.2 Использование хранимых процедур

  • 23.2.1 Синтаксис хранимых процедур
  • 23.2.2 Хранимые процедуры и привилегии MySQL
  • 23.2.3 Метаданные хранимых процедур
  • 23.2.4 Хранимые процедуры, функции, триггеры и LAST_INSERT_ID()

MySQL поддерживает хранимые процедуры (процедуры и функции). Хранимая процедура — это набор SQL-команд, которые могут быть сохранены на сервере. После этого клиенты не нуждаются в повторном выполнении отдельных команд, а могут обратиться к хранимой процедуре вместо этого.

Хранимые процедуры требуют таблицу proc в базе данных mysql. Эта таблица создается во время установки MySQL. Если вы обновляете MySQL до версии 5.7 с более ранней версии, убедитесь, что обновили таблицы предоставления прав, чтобы гарантировать существование таблицы proc. См. Раздел 4.4.7, «mysql_upgrade — Проверка и обновление таблиц MySQL».

Хранимые процедуры могут быть особенно полезны в определенных ситуациях:

  • Когда несколько клиентских приложений написаны на разных языках или работают на разных платформах, но нуждаются в выполнении одних и тех же операций с базой данных.

  • Когда безопасность имеет первостепенное значение. Например, банки используют хранимые процедуры и функции для всех распространённых операций. Это обеспечивает согласованную и безопасную среду, а процедуры гарантируют, что каждая операция должным образом регистрируется. В такой настройке приложения и пользователи не имеют прямого доступа к таблицам базы данных, а могут только выполнять определённые хранимые процедуры.

Хранимые процедуры могут повысить производительность, так как между сервером и клиентом нужно отправлять меньше информации. Компромисс заключается в том, что это увеличивает нагрузку на сервер базы данных, поскольку большая часть работы выполняется на стороне сервера, а не на стороне клиента (приложения). Учтите это, если множество клиентских машин (например, веб-серверов) обслуживаются только одним или несколькими серверами базы данных.

Хранимые процедуры также позволяют иметь библиотеки функций на сервере базы данных. Это функция, общая для современных языков программирования, которые позволяют реализовать такой дизайн (например, с использованием классов). Использование этих возможностей языка прикладного программирования полезно для программиста даже вне контекста использования базы данных.

MySQL использует синтаксис SQL:2003 для хранимых процедур, который также используется в DB2 от IBM. Весь описанный здесь синтаксис поддерживается, а любые ограничения и расширения документированы в соответствующих местах.

Дополнительные ресурсы

  • Возможно, вам будет полезен форум пользователей хранимых процедур Stored Procedures User Forum при работе с хранимыми процедурами и функциями.

  • Ответы на некоторые часто задаваемые вопросы о хранимых процедурах в MySQL см. в Разделе A.4, «MySQL 5.7 FAQ: Хранимые процедуры и функции».

  • Существуют некоторые ограничения на использование хранимых процедур. См. Раздел 23.8, «Ограничения на хранимые программы».

  • Двоичное протоколирование для хранимых процедур выполняется, как описано в Разделе 23.7, «Двоичное протоколирование хранимых программ».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/stored-routines.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API