Обработка ошибок
Область заголовка диагностики
В главе 14 мы изучали оператор SET TRANSACTION (задать транзакцию). В нем можно указать DIAGNOSTICS SIZE (размер диагностики). Этот размер является количеством информационных областей, выделяемых для хранения информации о состоянии. Если в операторе SET TRANSACTION не будет предложения DIAGNOSTICS SIZE, то СУБД выделит количество информационных областей, которое в ней установлено по умолчанию.
Заголовок области состоит из восьми элементов, которые приведены в табл. 20.1.
Таблица 20.1. Область заголовка диагностики.
Поля | Тип данных |
---|---|
number (количество) | Точный числовой, масштаб 0 |
row_count (количество строк) | Точный числовой, масштаб 0 |
command_functton (командная функция) | Символьная строка переменного размера, не менее 128 символов |
command_function_code (код командной функции) | Точный числовой, масштаб 0 |
more (больше) | Символьная строка, длина 1 |
transact ions_commited (фиксированные транзакции) | Точный числовой, масштаб 0 |
transactions_rolled_back (откатанные транзакции) | Точный числовой, масштаб 0 |
transactions_active (состояние транзакции) | Точный числовой, масштаб 0 |
Ниже эти элементы описаны более детально.
- В поле NUMBER хранится количество областей, заполненных диагностической информацией о текущей операции.
- В поле ROW_COUNT содержится количество строк, задействованных при выполнении оператора SQL INSERT, UPDATE или DELETE.
- Поле COMMAND_FUNCTION описывает только что выполненный динамический оператор SQL (если последний выполненный оператор SQL действительно был динамическим).
- Поле COMMAND_FUNCTION_CODE отображает номер кода для только что выполненного динамического оператора SQL (если последний выполненный оператор SQL действительно был динамическим). Каждая динамическая функция имеет соответствующий код.
- Поле MORE содержит одно из значений: 'Y' (да) или 'N' (нет). Значение 'Y' указывает на то, что записей состояния больше, чем может вместить область диагностики. Значение 'N' означает, что все сгенерированные записи состояния представлены в области диагностики. Вы можете получить необходимое количество записей, увеличив его, используя оператор SET TRANSACTIONS, однако эта возможность зависит от используемой вами реализации.
- Поле TRANSACTIONS_COMMITED содержит количество совершенных транзакций.
- Поле TRANSACTIONS_ROLLED_BACK содержит количество транзакций, которые были откатаны.
- Поле TRANSACTIONS_ACTIVE содержит значение 'Г, если транзакция в настоящее время активна, и значение '0' в противном случае. Транзакция считается допустимой для активизации, если открыт курсор или СУБД находится в ожидании отложенного параметра.