Выполнение 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;
}