FirebirdSQL logo

RDB$ERROR()

Доступно в

PSQL

Синтаксис
RDB$ERROR (<context>)

<context> ::= GDSCODE | SQLCODE | SQLSTATE | EXCEPTION | MESSAGE
Тип возвращаемого результата

Зависит от контекста

Возвращает значение контекста активного исключения.Тип возвращаемого значения зависит от контекста.

Note

Функция RDB$ERROR всегда возвращает NULL вне блока обработки ошибок WHEN …​ DO.

Доступные контексты в качестве аргумента функции RDB$ERROR:

EXCEPTION

функция возвращает имя исключения, если активно исключение определённое пользователем, или NULL если активно одно из системных исключений.Для контекста EXCEPTION тип возвращаемого значения: VARCHAR(63) CHARACTER SET UTF8.

MESSAGE

функция возвращает интерпретированный текст активного исключения.Для контекста MESSAGE тип возвращаемого значения: VARCHAR(1024) CHARACTER SET UTF8.

GDSCODE

функция возвращает значение контекстной переменной GDSCODE.

SQLCODE

функция возвращает значение контекстной переменной SQLCODE.

SQLSTATE

функция возвращает значение контекстной переменной SQLSTATE.

Example 1. Использование функции RDB$ERROR для сохранения текста ошибки в журнал
...
BEGIN
...
WHEN ANY DO
  EXECUTE PROCEDURE P_LOG_EXCEPTION(RDB$ERROR(MESSAGE));
END
...

RDB$GET_TRANSACTION_CN()

Доступно в

DSQL, PSQL

Синтаксис
RDB$GET_TRANSACTION_CN (transaction_id)
Table 1. Параметры функции RDB$GET_TRANSACTION_CN
Параметр Описание

transaction_id

Номер (идентификатор) транзакции

Тип возвращаемого результата:

BIGINT

Возвращает номер подтверждения (Commit Number) для заданной транзакции.

Note

Внутренние механизмы Firebird используют беззнаковое 8-байтное целое для Commit Number и беззнаковое 6-байтное целое для номера транзакции.Поэтому, несмотря на то, что язык SQL не имеет без знаковых целых, а RDB$GET_TRANSACTION_CN возвращает знаковый BIGINT, невозможно увидеть отрицательный номер подтверждения, за исключением нескольких специальных значений, используемых для неподтверждённых транзакций.

Если функция RDB$GET_TRANSACTION_CN возвращает значение больше 1, то это фактический (Commit Number) транзакции,то есть эта транзакция была зафиксирована после запуска базы данных.

В остальных случая функция может возвращать одно из следующих результатов, указывающих статус фиксации транзакции:

-2

мёртвые транзакции (отмененные);

-1

зависшие транзакции (в состоянии limbo 2PC транзакций);

 0

активные транзакции;

 1

для транзакций подтверждённых до старта базы данных или с номером меньше чем OIT (Oldest Interesting Transaction);

NULL

если номер транзакции равен NULL или больше чем Next Transaction.

Example 1. Использование RDB$GET_TRANSACTION_CN
select rdb$get_transaction_cn(current_transaction) from rdb$database;

select rdb$get_transaction_cn(123) from rdb$database;
Note

За более детальной информацией о Commit Number, обратитесь к Firebird 4.0 Release Notes.