Spec-Zone .ru
спецификации, руководства, описания, API
|
PREPAREstmt_name
FROMpreparable_stmt
PREPARE
оператор готовит SQL-оператор и присваивает его имя, stmt_name
, которым можно обратиться к оператору позже. Готовый
оператор выполняется с EXECUTE
и выпущенный с DEALLOCATE PREPARE
. Для примеров см. Раздел
13.5, "Синтаксис SQL для Готовых Операторов".
Имена оператора не являются чувствительными к регистру. preparable_stmt
или строковый литерал или пользовательская переменная,
которая содержит текст SQL-оператора. Текст должен представить единственный оператор, не многократные операторы.
В пределах оператора, ?
символы могут использоваться в качестве маркеров параметра,
чтобы указать, где значения данных должны быть связаны с запросом позже, когда Вы выполняете его. ?
символы не должны быть включены в пределах кавычек, даже если Вы намереваетесь
обязать их представлять значения в виде строки. Маркеры параметра могут использоваться только там, где значения
данных должны появиться, не для ключевых слов SQL, идентификаторов, и т.д.
Если готовый оператор с именем уже существует, это освобождается неявно прежде, чем новый оператор готовится. Это означает, что, если новый оператор содержит ошибку и не может быть подготовлен, ошибка возвращается, и никакой оператор с именем не существует.
Контекст готового оператора является сеансом, в пределах которого он создается, который как несколько импликаций:
Готовый оператор, создаваемый в одном сеансе, не доступен другим сеансам.
Когда сеанс заканчивается, или обычно или неправильно, его готовые операторы больше не существуют. Если % автоповторно соединяются, включается, клиент не уведомляется, что соединение было потеряно. Поэтому клиенты могут хотеть отключить, % автоповторно соединяются. См. Раздел 22.8.16, "Управляя Автоматическим Поведением Пересоединения".
Готовый оператор, создаваемый в пределах сохраненной программы, продолжает существовать после того, как программа заканчивает выполняться и может быть выполнена вне программы позже.
Оператор, подготовленный в сохраненном контексте программы, не может сослаться на хранимую процедуру или параметры функции или локальные переменные, потому что они выходят из контекста, когда программа заканчивается и была бы недоступна, был оператор, который будет выполняться позже вне программы. Как обходное решение, обратитесь вместо этого к определяемым пользователем переменным, у которых также есть контекст сеанса; см. Раздел 9.4, "Определяемые пользователем Переменные".