|
|
Все DSQL приложения должны содержать объявление одной или нескольких структур данных, называемых расширенными областями данных SQL - XSQLDA (eXtended SQL Descriptor Areal). Определение структуры XSQLDA может быть найдено в заголовочном файле ibase.h . Приложения объявляют элементы XSQLDA для использования. XSQLDA это структура данных базового языка который использует DSQL для обмена данными с БД при обработке SQL инструкции. Есть два типа XSQLDA: для ввода и для вывода. Оба дескриптора реализованы с использованием структуры XSQLDA. Одно поле в XSQLDA, sqlvar, является структурой XSQLVAR. Sqlvar особенно важен, потому что один XSQLVAR должен быть определен для каждого входного параметра или возвращаемого столбца. Подобно XSQLDA, XSQLVAR - структура, определенная в ibase.h . Приложения не объявляют XSQLVAR раньше времени, но должны, вместо этого, динамически выделить память для хранения надлежащего числа структур XSQLVAR, требуемых для каждой инструкции DSQL прежде, чем она будет выполнена, а затем освобождают их, соответственно после выполнения инструкции. Следующий рисунок иллюстрируют связи между XSQLDA и XSQLVAR: Элемент
XSQLDA
short
version char
sqldaid[8] ISC_LONG
sqldabc short
sqln short
sqld XSQLVAR sqlvar[1] Массив
n элементов
XSQVAR
1-й
элемент
n-й
элемент short
sqltype
short sqltype short
sqlscale
short sqlscale short
sqlsubtype
short sqlsubtype short
sqllen
short sqllen char
*sqldata
char *sqldata short
*sqlind
short *sqlind short
sqlname_length
short sqlname_length char
sqlname[32]
char sqlname[32] short
relname_length .
. .
short relname_length char
relname[32]
char relname[32] short
ownname_length
short ownname_length char
ownname[32]
char ownname[32] short
aliasname_length
short aliasname_length char
aliasname[32]
char aliasname[32]
XSQLDA для ввода состоит из одной структуры XSQLDA и одной структуры XSQLVAR для каждого входного параметра. XSQLDA для вывода также состоит из одной структуры XSQLDA и одной структуры XSQLVAR для каждого элемента данных, возвращенного инструкцией. XSQLDA и его связанные структуры XSQLVAR выделены в отдельный блок смежной памяти. Isc_dsql_prepare(), isc_dsql_describe(), и isc_dsql_describe_bind() могут использоваться, чтобы определить нужное число структур XSQLVAR для выделения, и макрокоманда XSQLDA_LENGTH может использоваться, чтобы выделить нужное количество памяти.
|
Дизайн: Piton Alien |