Переменные

  • Часть 1
  • | 2
  • | 3

имя_локальной_переменной= <выражение>;.

Переменным должны присваиваться значения того типа данных, с каким они были объявлены.

Допускается при объявлении локальной переменной сразу же ее инициализировать, например следующим образом:

DECLARE VARIABLE x INTEGER = 123;

или

DECLARE VARIABLE x INTEGER DEFAULT 123;.

СУБД делает доступным множество переменных, поддерживаемых в контексте текущего соединения клиента и его деятельности. Эти контекстные переменные доступны для использования в PSQL. Большинство контекстных переменных процедурного языка используются только в триггерах. Существует только одна контекстная переменная PSQL, которую можно использовать как в триггерах, так и в ХП. Это переменная ROW_COUNT, возвращающая количество строк, полученных выполненным запросом DML или SELECT.

В триггерах для реализации отслеживания целостности данных используются контекстные переменные OLD.столбеци NEW.столбец. Эти переменные хранят старые и новые значения указанного столбца таблицы, когда выполняется запрос на модификацию данных.

Также в триггерах могут использоваться логические контекстные переменные UPDATING, INSERTING и DELETING для задания определенных действий в зависимости от типа события DML, для которого срабатывает триггер.

Входные параметры недоступны для использования в триггерах. Они используются для передачи значений хранимым процедурам из клиентских приложений или других хранимых процедур.

Выходные параметры также недоступны для использования в триггерах. Они используются для возвращения значений из ХП вызвавшим их объектам.

Говоря о переменных процедурного языка, следует особо отметить то, что в запросах SQL локальные переменные, входные и выходные параметры должны использоваться с двоеточием перед именем переменной, чтобы указать, что это переменные, а не имена столбцов таблиц. В остальных случаях (например, при присваивании значения переменной, в логических условиях условных операторов) не требуется наличия двоеточия перед именем переменной. Двоеточие перед контекстными переменными не ставится никогда.

предыдущаяследующая