Привязка поля ответа – LINTER_BindAnswer

Прототип функции
 
L_LONG LINTER_BindAnswer(
 L_WORD CursorID,      /* идентификатор курсора */
 L_WORD StatementID,   /* идентификатор оператора */
 L_SWORD ColumnNumber, /* номер столбца (или поля) ответа */
 void *AnswerBuffer,   /* буфер ответов */
 L_CHAR *NullIndicator,/* буфер NULL-индикаторов */
 L_LONG Shift,         /* характ-ка элемента буфера ответов */
 L_SWORD OutType,      /* выходной тип поля ответа */
 L_LONG OutLength,     /* выходная длина поля ответа */
 L_SWORD OutPrec,      /* выходная точность поля (для tDecimal) */
 L_SWORD OutScale,     /* выходной масштаб поля (для tDecimal) */
 L_LONG *RealLength);  /* массив реально принятых длин */
Входные параметры
Параметр Описание
CursorID  Идентификатор курсора
StatementID  Идентификатор оператора
ColumnNumber  Номер столбца (или поля) ответа
AnswerBuffer  Буфер ответов
NullIndicator  Буфер NULL-индикаторов значений из AnswerBuffer
Shift  Характеристика элемента буфера ответов: если значение больше либо равно нулю, то переменная Shift задаёт размер элемента буфера ответов, а если значение отрицательное, то AnswerBuffer задает буфер указателей значений параметров ответов
OutType  Выходной тип поля ответа
OutLength  Выходная длина поля ответа
OutPrec  Точность (для tDecimal)
OutScale  Масштаб (для tDecimal)
RealLength  Массив для приема реальных длин поля
Выходные параметры
Параметр Описание
RealLength  Реальная длина ответа. Заполняется после выполнения функции LINTER_Fetch
Описание

Назначает буфер размещения ответов, получаемых с помощью LINTER_Fetch. Назначить этот буфер можно сразу для нескольких ответов.

Например, следующие вызовы:

...
typedef char Make_Type[20];
typedef struct {
	Make_Type Make;
	long PersonID;
	} Answ_Type;
Answ_Type Buf[20];
...
LINTER_BindAnswer(3, 7, 1, Buf, NI, sizeof(Answ_Type), tChar, sizeof(Make_Type), 0, 0, NULL);
LINTER_BindAnswer(3, 7, 2, (char*)Buf +sizeof(Make_Type), NI, sizeof(Answ_Type), tInt, sizeof(long), 0, 0, NULL);

или

LINTER_BindAnswer(3, 7, 1, Buf.Make, NI, sizeof(Answ_Type), tChar, sizeof(Make_Type), 0, 0, NULL);
LINTER_BindAnswer(3, 7, 2, &Buf.PersonID, NI, sizeof(Answ_Type), tInt, sizeof(long), 0, 0, NULL);

указали LinAPI, что ответ, полученный по 3-ему курсору при выполнении оператора № 7, имеет структуру Answ_Type. Теперь для приема записей может использоваться массив Buf.

Примечание

Привязка поля ответа может быть произведена только после трансляции (случай использования оператора – Statement) или выполнения запроса (посредством функции LINTER_ExecuteDirect). Во втором случае StatementID должен быть равным 0.