Контекстные переменные
Контекстные переменные
Firebird делает доступным множество значений переменных, поддерживаемых системой в контексте текущего соединения клиента и его деятельности. Эти контекстные переменные доступны для использования в SQL, включая язык триггеров и хранимых процедур, PSQL. Некоторые доступны только в PSQL, большинство - только в диалекте 3 базы данных. В табл. 8.1 представлены контекстные переменные Firebird.
Таблица 8.1. Список контекстных переменных
Контекстная переменная Тип данных Описание Доступность CURRENT_CONNECTION INTEGER Системный идентификатор соединения, при котором выполняется настоящий запрос Firebird 1.5 и выше, DSQL и PSQL CURRENT_DATE DATE Текущая дата по часам на сервере Firebird 1.0 и выше, все окружения SQL CURRENT_ROLE VARCHAR (31) Имя роли, под которым соединился текущий пользователь. Возвращает пустую строку, если текущее соединение не использовало роль Firebird 1.0 и выше, все окружения SQL CURRENT_TIME TIME Текущее время по часам на сервере, выраженное в секундах после полуночи Firebird 1.0 и выше, все окружения SQL CURRENT_TIMESTAMP TIMESTAMP Текущая дата и время по часам на сервере в секундах Firebird 1.0 и выше, все окружения SQL CURRENT_TRANSACTION INTEGER Системный идентификатор транзакции, в контексте которой выполняется текущий запрос Firebird 1.5 и выше, DSQL и PSQL CURRENTUSER VARCHAR( 128) Имя пользователя, который связан сданным экземпляром клиентской библиотеки Firebird 1.0 и выше, все окружения SQL ROW_COONT INTEGER Счетчик строк измененных, удаленных и добавленных оператором DML после завершения операции Firebird 1.5 и выше, DSQL и PSQL UPDATING BOOLEAN Возвращает true, если выполняется оператор изменения Firebird 1.5 и выше, только диалект триггера PSQL INSERTING BOOLEAN Возвращает true, если выполняется оператор добавления Firebird 1.5 и выше, только диалект триггера PSQL DELETING BOOLEAN Возвращает true, если выполняется оператор удаления Firebird 1.5 и выше, только диалект триггера PSQL SQLCODE INTEGER Возвращает SQLCODE из блока исключения WHEN. Использование см. в главе 32 Firebird 1.5 и выше, только язык процедур PSQL GDSCODE INTEGER Возвращает GDSCODE из блока исключения WHEN. Использование см. в главе 32 Firebird 1.5 и выше, только язык процедур PSQL USER VARCHAR(128) Имя пользователя, который связан сданным экземпляром клиентской библиотеки Предшественники InterBase, все версии Firebird, все окружения SQL, доступные в диалекте 1
Временные значения
CURRENT_CONNECTION и CURRENT_TRANSACTION не имеют смысла вне текущего соединения и контекста транзакции соответственно. Сервер Firebird сохранит самые последние значения этих идентификаторов в заголовочной странице базы данных. После восстановления базы данных из резервной копии эти значения будут заново установлены в ноль.
CURRENT_TIMESTAMP записывает время сервера на момент старта операции. Для всех записей, вставляемых или обновляемых одним оператором, значение этой переменной будет одним и тем же.
Хотя CURRENT_TIME хранится на сервере как время после полуночи, ее тип TIME, а не интервал времени. Для получения интервала времени используйте TIMESTAMP при старте и завершении и вычтите время старта из времени завершения. Результатом будет интервал времени в днях.
Контекстные переменные даты/времени основаны на времени сервера, которое может отличаться от внутреннего времени на клиенте.