Spec-Zone.ru › MariaDB

Переменная DECLARE

Синтаксис

DECLARE var_name [, var_name] ... [[ROW] TYPE OF]] type [DEFAULT value]

Описание

Это оператор используется для объявления локальных переменных в сохранённых программах. Чтобы задать значение по умолчанию для переменной, включите DEFAULT предложение. Значение можно указать как выражение (допускаются даже подзапросы); оно не обязательно должно быть константой. Если DEFAULT предложение отсутствует, начальное значение — NULL.

Локальные переменные обрабатываются как параметры сохранённой процедуры относительно типа данных и проверки переполнения. См. CREATE PROCEDURE.

Локальные переменные должны быть объявлены до CONDITION, курсоров и HANDLER.

Имена локальных переменных не чувствительны к регистру.

Область действия локальной переменной — внутри BEGIN ... END блока, где она объявлена. К переменной можно обратиться в блоках, вложенных в объявляющий блок, за исключением тех блоков, которые объявляют переменную с тем же именем.

ТИП/ТИП СТРОКИ

MariaDB, начиная с 10.3

TYPE OF и ROW TYPE OF привязанные типы данных для сохранённых процедур были введены в MariaDB 10.3.

Привязанные типы данных позволяют определить тип данных на основе другого объекта, такого как строка таблицы, а не задавать его явно в объявлении. Если объект-якорь изменяется, то изменяется и привязанный тип данных. Это может упростить обслуживание процедур, так что если тип данных в таблице изменится, он автоматически изменится и в процедуре.

Переменные, объявленные с ROW TYPE OF , будут иметь те же функции, что и неявные переменные ROW. Невозможно использовать переменные ROW TYPE OF в TYPE OF предложении.

Реальный тип данных TYPE OF и ROW TYPE OF table_name станет известен в самом начале вызова сохранённой процедуры. Операторы ALTER TABLE или DROP TABLE, выполненные внутри текущей процедуры над таблицами, которые появляются в якорях, не повлияют на тип данных привязанных переменных, даже если переменная объявлена после оператора ALTER TABLE или DROP TABLE.

Реальный тип данных ROW TYPE OF cursor_name переменной станет известен при входе в блок, где переменная объявлена. Инициализация типа данных произойдёт только один раз. В курсоре ROW TYPE OF переменной, объявленной внутри цикла, её тип данных станет известен на первой итерации и не изменится на последующих итерациях.

Таблицы, на которые ссылаются TYPE OF и ROW TYPE OF объявления, будут проверены на существование в начале вызова сохранённой процедуры. CREATE PROCEDURE или CREATE FUNCTION не будут проверять наличие ссылающихся таблиц.

Примеры

TYPE OF и ROW TYPE OF из MariaDB 10.3:

DECLARE tmp TYPE OF t1.a; -- Get the data type from the column {{a}} in the table {{t1}}

DECLARE rec1 ROW TYPE OF t1; -- Get the row data type from the table {{t1}}

DECLARE rec2 ROW TYPE OF cur1; -- Get the row data type from the cursor {{cur1}}

См. также

  • Пользовательские переменные
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/declare-variable/

Spec-Zone.ru

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