Выполнение 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 Код состояния ОС
Таблица 10. Возвращаемое значение поля RowId для SQL-запросов
SQL-запросЗначение поля RowId

BACKUP DATABASE …

RowId записи процесса архивирования в системной таблице $$$INKERNBACK (системный идентификатор процесса архивирования)

BACKUP STOP ALL

Количество прерванных процессов архивирования

WAIT EVENT …

GET EVENT …

Битовая маска наступивших (для WAIT) или установленных (для GET) событий, указанных в запросе. Первое указанное в запросе событие соответствует нулевому биту маски, второе – первому биту и т.д. Для WAIT EVENT значение 1 бита маски соответствует наступившему событию, значение 0 – ожидаемому. Для GET EVENT значение 1 бита маски означает, что событие установлено (активно). Значение лишних битов маски равно 0. Если < выражение-событие > в SQL-запросе содержит более 32 событий, то информация о 33-м и последующих событиях клиентскому приложению недоступна

SELECT …

RowId первой выбранной записи, если SELECT-запрос выполнялся из одной таблицы или обновляемого представления. RowCount – количество выбранных записей

INSERT …

DELETE …

UPDATE …

RowId последней реально обработанной записи. RowCount – количество реально обработанных записей


Описание

Команда должна посылаться по открытому каналу.

Если по каналу предварительно был выполнен 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;
   }
Пример использования команды