FirebirdSQL logo

SQLSTATE

Доступно в

PSQL

Синтаксис
SQLSTATE
Тип возвращаемого результата

CHAR(5)

В блоках обработки ошибок WHEN …​ DO контекстная переменная SQLSTATE переменная содержит 5 символов SQL-2003 — совместимого кода состояния, переданного оператором, вызвавшим ошибку.Вне обработчиков ошибок SQLSTATE всегда равен '00000', а вне PSQL не существует вообще.

Note
  • SQLSTATE предназначен для замены SQLCODE. Последняя, в настоящее время устарела и буден удалена будущих версиях Firebird;

  • Любой код SQLSTATE состоит из двух символов класса и трёх символов подкласса. Класс 00 (успешное выполнение), 01 (предупреждение) и 02 (нет данных) представляют собой условия завершения. Каждый код статуса вне этих классов является исключением. Поскольку классы 00, 01 и 02 не вызывают ошибку, они никогда не будут обнаруживаться в переменной SQLSTATE.

Example 1. Использование переменной SQLSTATE
WHEN ANY DO
BEGIN
  MSG = CASE SQLSTATE
          WHEN '22003' THEN
            'Число вышло за пределы диапазона!'
          WHEN '22012' THEN
            'Деление на ноль!'
          WHEN '23000' THEN
            'Нарушение ограничения целостности!'
          ELSE 'Ошибок нет! SQLSTATE = ' || SQLSTATE;
        END;
  EXCEPTION EX_CUSTOM MSG;
END

UPDATING

Доступно в

PSQL

Синтаксис
UPDATING
Тип возвращаемого результата

BOOLEAN

Контекстная переменная UPDATING доступна только коде табличных триггеров.Используется в триггерах на несколько типов событий и показывает, что триггер сработал при выполнении операции UPDATE.

Example 1. Использование переменной UPDATING
...
IF (INSERTING OR UPDATING) THEN
BEGIN
  IF (NEW.SERIAL_NUM IS NULL) THEN
    NEW.SERIAL_NUM = GEN_ID (GEN_SERIALS, 1);
END
...