Привязка поля ответа – 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.