Поддерживаются переменные двух типов: локальные и глобальные. Переменные, объявленные вне процедуры, считаются глобальными. Переменные, объявленные внутри процедуры, являются локальными.
Глобальные переменные существуют в течение всего сеанса пользователя и удаляются только при завершении сеанса. Глобальную переменную достаточно один раз объявить (создать), а затем использовать во всех последующих SQL-скриптах, посылаемых пользователем. Однако глобальные переменные у каждого пользователя свои. Для обмена информацией между одновременно работающими пользователями следует использовать таблицы.
Локальные переменные доступны только в той процедуре, где они объявлены. Значение локальной переменной разрушается при выходе из процедуры, таким образом, ее нельзя использовать вне процедуры. Имя локальной переменной может совпадать с именем глобальной переменной. В этом случае значение глобальной переменной будет временно недоступно. Имя локальной переменной не может совпадать с именем аргументов процедуры.
Любая переменная, которая не была объявлена в выполняемой программе, считается именем глобальной переменной, созданной ранее.
Объявление переменной может располагаться в любом месте программы (процедуры), но до первого использования переменной в программе (процедуре).
Формат объявления:
var Переменная [ = Выражение ] ,...; variable Переменная [ = Выражение ] ,...; declare variable Переменная [ = Выражение ] ,...
Аргументы:
Аргумент
Значение
Переменная
Имя объявляемой переменной. Имя переменной должно начинаться с латинской буквы или символа «подчеркивание» и может содержать латинские буквы, десятичные цифры или символ «подчеркивание».
Выражение
Выражение, значение которого вычисляется и присваивается объявляемой переменной. Производится так называемая инициализация переменной. Если переменная не инициализируется, то ее значение не определено. Чтение значения такой переменной приведет к ошибке. В неинициализированную переменную можно только записать новое значение. Неинициализированную переменную нельзя использовать в процедуре в качестве параметра типа in или inout.