Переменная DECLARE
Синтаксис
DECLARE var_name [, var_name] ... [[ROW] TYPE OF]] type [DEFAULT value]
Описание
Это оператор используется для объявления локальных переменных в сохранённых программах. Чтобы задать значение по умолчанию для переменной, включите DEFAULT предложение. Значение можно указать как выражение (допускаются даже подзапросы); оно не обязательно должно быть константой. Если DEFAULT предложение отсутствует, начальное значение — NULL.
Локальные переменные обрабатываются как параметры сохранённой процедуры относительно типа данных и проверки переполнения. См. CREATE PROCEDURE.
Локальные переменные должны быть объявлены до CONDITION, курсоров и HANDLER.
Имена локальных переменных не чувствительны к регистру.
Область действия локальной переменной — внутри BEGIN ... END блока, где она объявлена. К переменной можно обратиться в блоках, вложенных в объявляющий блок, за исключением тех блоков, которые объявляют переменную с тем же именем.
ТИП/ТИП СТРОКИ
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}}
См. также
© 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/