Spec-Zone.ru › MySQL 5.7

13.5.1 Заявление PREPARE

PREPARE stmt_name FROM preparable_stmt

Заявление PREPARE подготавливает SQL-запрос и присваивает ему имя, stmt_name, для последующего обращения к этому запросу. Подготовленное заявление выполняется с помощью EXECUTE и освобождается с помощью DEALLOCATE PREPARE. Примеры см. в Разделе 13.5, «Подготовленные запросы».

Имена заявлений нечувствительны к регистру. preparable_stmt является либо строковой литеральной, либо пользовательской переменной, содержащей текст SQL-запроса. Текст должен представлять собой одно заявление, а не несколько. Внутри заявления можно использовать ? символы в качестве маркеров параметров, чтобы указать места, где данные будут связаны с запросом позже при его выполнении. Символы ? не должны быть заключены в кавычки, даже если вы намерены связать их со строковыми значениями. Маркеры параметров можно использовать только там, где должны появляться данные, а не для SQL-ключевых слов, идентификаторов и т. д.

Если уже существует подготовленное заявление с заданным именем, оно неявно освобождается перед подготовкой нового заявления. Это означает, что если новое заявление содержит ошибку и не может быть подготовлено, возвращается ошибка, и никакое заявление с данным именем не существует.

Область действия подготовленного заявления — сессия, в которой оно создано, что имеет несколько последствий:

  • Подготовленное заявление, созданное в одной сессии, недоступно для других сессий.

  • Когда сессия завершается, независимо от того, нормально или аномально, её подготовленные заявления больше не существуют. Если включено автоматическое подключение, клиент не получает уведомления о том, что соединение было потеряно. По этой причине клиенты могут захотеть отключить автоматическое подключение. См. .

  • Подготовленное заявление, созданное в рамках хранимой программы, продолжает существовать после завершения выполнения программы и может быть выполнено вне программы позже.

  • Заявление, подготовленное в контексте хранимой программы, не может ссылаться на параметры хранимых процедур или функций или локальные переменные, потому что они выходят за пределы области видимости после завершения программы и не будут доступны при последующем выполнении заявления вне программы. В качестве обходного пути используйте вместо этого пользовательские переменные, которые также имеют область действия сессии; см. Раздел 9.4, «Пользовательские переменные».

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

Spec-Zone.ru

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