Поля контрольного блока
-
CodErr
-
Код завершения запроса к СУБД ЛИНТЕР. Устанавливается СУБД ЛИНТЕР. В это поле заносятся коды завершения, сформированные самим интерфейсом нижнего уровня (при неправильном вызове функции
inter
), и результаты обработки команды СУБД ЛИНТЕР. ПолеCodErr
дублируется значением, возвращаемым непосредственно функцией. Так, например, если адрес контрольного блока при вызове функции был передан неверно, то такую ошибку можно обнаружить только через анализ кода завершения самой функцииinter
. Список возможных кодов завершения приведен в документе «СУБД ЛИНТЕР. Справочник кодов завершения», подраздел «Коды завершения при коммуникационных операциях (1000-1011)». -
Prior
-
Приоритет канала; может иметь значения от 0 (самый низкий приоритет) до 249 (высший приоритет). Используется для изменения очередности обработки запросов ядром СУБД. В большинстве приложений рекомендуется задавать нулевой приоритет, так как в этом случае ядро выделяет поочередно одинаковый квант времени для всех запросов, и обработка запросов выполняется в псевдопараллельном режиме. Более высокий приоритет канала следует устанавливать в приложениях, предъявляющих повышенные требования к временным характеристикам.
-
NumChan
-
Номер канала СУБД, по которому выполняется обработка запроса. При создании (открытии) канала СУБД возвращает в этом поле номер, назначенный созданному каналу. Если пользовательская программа открыла несколько каналов и использует только один контрольный блок, то при каждом обращении к СУБД в этом поле должен явно задаваться номер канала, по которому происходит обработка команды СУБД. При этом содержимое остальных полей контрольного блока зависит от подаваемого запроса: если запрос является продолжением обработки последнего выполненного по данному каналу запроса, то контрольный блок должен содержать контекст последнего запроса, если предполагается выполнение нового запроса, контрольный блок должен содержать контекст нового запроса. В обоих случаях поля, значения которых использовались для открытия канала, не должны изменяться. Если же открыт один канал или несколько, но каждый из них имеет собственный контрольный блок, то это поле можно не формировать (оно остается неизменным после открытия канала в течение всего сеанса работы с СУБД).
-
UserName
-
Имя пользователя. Зарезервировано для будущего использования.
-
Command
-
Имя команды интерфейса нижнего уровня.
-
Node
-
Имя ЛИНТЕР-сервера (см. таблицу 1). Если поле содержит пробелы или двоичные нули, предполагается работа с сервером по умолчанию.
-
RowId
-
Внутренний системный номер записи, которая была последней обработана (найдена/добавлена/изменена/удалена) в данном канале. Заполняется СУБД ЛИНТЕР только при выполнении запроса на обработку данных. В некоторых случаях устанавливается приложением для прямого доступа к этой записи.
-
RowCount
-
Количество реально обработанных (найденных, добавленных, удаленных или измененных) записей при выполнении запроса. Заполняется СУБД ЛИНТЕР после нормального завершения обработки запроса.
-
PrzExe
-
Указание о режиме обработки команды интерфейса нижнего уровня. Режим устанавливается пользовательской программой в контексте команды СУБД ЛИНТЕР. Конкретные значения этого поля приведены в таблице 2.
-
SysErr
-
Код ошибки, переданный СУБД операционной/сетевой средой при обработке запроса. В это поле передаются, в основном, коды завершения файловых операций и операций обмена данными ОС. Значение
SysErr
используется для уточнения и детализации кода завершения, сформированного ядром СУБД ЛИНТЕР. Так, например, код завершения СУБД ЛИНТЕР Ошибка создания файла может быть вызван разными причинами: отсутствием свободного места на устройстве, неактивным состоянием устройства и т.п. Код завершения, помещаемый в полеSysErr
для однотипных ошибочных ситуаций, в различных операционных средах может иметь разное значение, поэтому для его анализа следует руководствоваться справочными документами соответствующей операционной системы. -
LnBufRow
-
Длина буфера записи выборки данных (
RowBuf
) при обработке команды. Для входных параметров – это предполагаемая или максимально возможная длина записи выборки данных, для выходных – реальная (фактически полученная) длина записи выборки данных. В первом случае поле заполняется пользовательской программой, во втором – СУБД ЛИНТЕР. Если реальная длина записи выборки данных окажется больше, чем длина буфера выборки данных, выполнение SELECT-запроса будет прервано с выдачей соответствующего кода завершения (кроме случая использованияRowBuf
в командеOPEN
). Если буфер приложения может вместить запись выборки данных, это поле будет содержать реальную длину выбранной записи. Так как значение вLnBufRow
изменяется после каждой переданной записи, то при переходе к другим SELECT-запросам нужно вновь инициализировать это поле. -
CharSet
-
Номер кодовой страницы (для внутреннего использования СУБД ЛИНТЕР).
Значение PrzExe | Макроопределение в intlib2.h | Спецификация |
---|---|---|
0x00000000 | M_BINARY | Передать выборку данных на SELECT-запрос в формате без спецификаций полей записи |
0x00000003 | M_SPEC | Передать выборку данных на SELECT-запрос в формате со спецификациями полей записи |
0x00000100 | M_OPTIMISTIC | Устанавливает режим обработки транзакций OPTIMISTIC
ПримечаниеРежим OPTIMISTIC устарел. Применять не рекомендуется. |
0x00000200 | M_SHARE | Не используется |
0x00000400 | M_EXCLUSIVE | Устанавливает режим обработки транзакций EXCLUSIVE (PESSIMISTIC) |
0x00001000 | Q_ASYNC | Устанавливает режим асинхронного взаимодействия с СУБД ЛИНТЕР |
0x00002000 | Q_ASYNCDONE | Устанавливается интерфейсом нижнего уровня по факту завершения обращения к СУБД ЛИНТЕР при работе в асинхронном режиме |
0x00400000 | Q_USE_UTF8 | Транслировать SQL-запросы в кодировке UTF8 независимо от установленной клиентской кодировки |
0x00800000 | Q_USE_ADO | Информировать о наличии заблокированных записей при выборке данных (см. команды GETM, GETN, GETP). Зарезервировано для будущего применения |
0x40000000 | Q_KRBREQ | Идентификация и аутентификация пользователя должна выполняться по Kerberos-протоколу |
Если поле
PrzExe
не заполнено, устанавливаются следующие параметры канала:
-
режим обработки транзакций AUTOCOMMIT;
-
синхронный режим выполнения запросов;
-
формат выборки данных не содержит спецификации полей записи;
-
режим приема/передачи данных: по умолчанию.
Режим приема/передачи данных для СУБД ЛИНТЕР по умолчанию выбирается следующим образом:
-
если по каналу подан SQL-запрос set names (кодировка соединения по умолчанию) (см. документ «СУБД ЛИНТЕР. Справочник по SQL», пункт «Кодировка соединения по умолчанию»), то используется заданная в запросе кодовая страница (при условии, что она загружена в БД);
-
иначе, если задана переменная окружения
LINTER_CP
, то используется указанная в этой переменной кодовая страница (при условии, что она загружена в БД); -
иначе используется кодировка по умолчанию, которая автоматически определяется СУБД ЛИНТЕР в соответствии с правилами, диктуемыми ОС, в которой функционирует СУБД;
-
если имя кодовой страницы (заданное любым из перечисленных выше способов) неверное, то будет использована кодовая страница
DEFAULT
(только первые 127 символов).