Выполнение SQL-запроса
Назначение
Выполнение любого SQL-запроса СУБД ЛИНТЕР.
Примечание
Для выполнения поисковых SQL-запросов можно вместо данной команды использовать специальную команду SLCT.
Параметры вызова
inter(CBL, NULL, OpBuf, [CondBuf], NULL);
Входные данные
Входными данными являются:
-
контрольный блок
CBL
; -
буфер оператора
OpBuf
.
В контрольном блоке должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер канала | |
Command
|
"4 пробела"
| |
Node
| Имя ЛИНТЕР-сервера |
Буфер оператора
OpBuf
должен содержать символьный текст SQL-оператора в кодировке канала,
по которому подается запрос.
Текст SQL-запроса должен заканчиваться двоичным нулем.
Выходные данные
Выходными данными является контрольный блок
CBL
.
В нем будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
RowId
| Зависит от выполняемого SQL-запроса (таблица 10) | |
RowCount
| Зависит от выполняемого SQL-запроса (таблица 10) | |
SysErr
| Код состояния ОС |
SQL-запрос | Значение поля RowId |
---|---|
BACKUP DATABASE … |
|
BACKUP STOP ALL | Количество прерванных процессов архивирования |
WAIT EVENT … GET EVENT … |
Битовая маска наступивших (для WAIT) или установленных (для GET) событий, указанных в запросе. Первое указанное в запросе событие соответствует нулевому биту маски, второе – первому биту и т.д. Для WAIT EVENT значение 1 бита маски соответствует наступившему событию, значение 0 – ожидаемому. Для GET EVENT значение 1 бита маски означает, что событие установлено (активно). Значение лишних битов маски равно 0. Если < выражение-событие > в SQL-запросе содержит более 32 событий, то информация о 33-м и последующих событиях клиентскому приложению недоступна |
SELECT … |
|
INSERT … DELETE … UPDATE … |
|
Описание
Команда должна посылаться по открытому каналу.
Если по каналу предварительно был выполнен SQL-запрос SET NAMES (см. документ «СУБД ЛИНТЕР. Справочник по SQL», пункт «Кодировка соединения по умолчанию»), то по умолчанию символьные столбцы в создаваемых таблицах (по запросу CREATE TABLE …) будут иметь кодировку канала.
Обработка SELECT-запроса с помощью данной команды и команды
SLCT
выполняется идентично, за исключением того,
что содержимое полей блока
CBL
в файле журнала протоколирования (LINTER.LOG
) будет различным.
Коды завершения
Возвращается код завершения, сформированный ядром СУБД ЛИНТЕР при обработке полученного SQL-оператора.
Возможные коды завершения приведены в документе «СУБД ЛИНТЕР. Справочник кодов завершения», подраздел «Коды завершения при обработке данных (8100-8888)».
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterNotSelect(TCBL *pCBL, L_CHAR *Statement) { memset(pCBL- >Command, ' ', 4); pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, NULL, Statement, NULL, NULL); return pCBL- >CodErr; }