Поля дескрипторов возвращающего табличное значение параметра

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Поддержка возвращаемых табличным значением параметров включает новые SQL Server поля в дескрипторов параметров приложения ODBC (APD) и дескрипторов параметров реализации (IPD).

Комментарии

Имя Расположение Тип Описание
SQL_CA_SS_TYPE_NAME IPD SQLTCHAR* Имя серверного типа возвращающего табличное значение параметра.

Если имя типа возвращающего табличное значение параметра указывается при вызове SQLBindParameter, оно всегда должно указываться в виде значения Юникода, даже в приложениях, созданных как приложения ANSI. Значение, используемое для параметра StrLen_or_IndPtr , должно быть либо SQL_NTS, либо длина строки имени, умноженная на sizeof(WCHAR).

Если имя типа возвращающего табличное значение параметра указывается с помощью SQLSetDescField, его можно указать с помощью литерала, соответствующего способу построения приложения. Диспетчер драйвера ODBC выполнит все необходимые преобразования данных в Юникод.
SQL_CA_SS_TYPE_CATALOG_NAME (только для чтения) IPD SQLTCHAR* Каталог, в котором определен тип.
SQL_CA_SS_TYPE_SCHEMA_NAME IPD SQLTCHAR* Схема, в которой определен тип.

Приложения не должны устанавливать SQL_CA_SS_TYPE_CATALOG_NAME для возвращающих табличное значение параметров. Иначе будет возвращена ошибка SQL_ERROR и зарегистрирована диагностическая запись с SQLSTATE = HY091 и сообщением «Недопустимый идентификатор поля дескриптора».

Если фокус параметра установлен на возвращающий табличное значение параметр, то к возвращающим табличное значение параметрам применяются следующие атрибуты инструкций и поля заголовка дескриптора:

Имя Расположение Тип Описание
SQL_ATTR_PARAMSET_SIZE

(эквивалентен SQL_DESC_ARRAY_SIZE в дескрипторе параметра приложения)
APD SQLUINTEGER Размер массива для массивов буфера для возвращающего табличное значение параметра. Это максимальное количество строк, которое может быть размещено в буферах, или размер буферов в строках. Возвращающий табличное значение параметр может иметь больше или меньше строк, чем помещается в буфер. Значение по умолчанию: 1.

Примечание. Если SQL_SOPT_SS_PARAM_FOCUS имеет значение по умолчанию 0, SQL_ATTR_PARAMSET_SIZE ссылается на инструкцию и указывает количество наборов параметров. Если для SQL_SOPT_SS_PARAM_FOCUS задан порядковый номер возвращающего табличное значение параметра, то он ссылается на возвращающий табличное значение параметр и указывает число строк для набора параметров для возвращающего табличное значение параметра.
SQL_ATTR_PARAM _BIND_TYPE APD SQLINTEGER По умолчанию имеет значение SQL_PARAM_BIND_BY_COLUMN.

Чтобы выбрать привязку на уровне строки, это поле имеет значение длины структуры или экземпляра буфера, который будет привязан к набору строк возвращающего табличное значение параметра. Эта длина должна включать пробел для всех связанных столбцов и все заполнения структуры или буфера. Это гарантирует, что если адрес связанного столбца увеличивается на указанную длину, результат будет указывать на начало того же столбца в следующей строке. Это поведение гарантируется при использовании оператора sizeof в ANSI C.
SQL_ATTR_PARAM_BIND_OFFSET_PTR APD SQLINTEGER* Значение по умолчанию — указатель NULL.

Если это поле имеет значение, отличное от NULL, драйвер разыменовывает указатель, добавляет разыменованное значение к каждому из отложенных полей в записи дескриптора (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR и SQL_DESC_OCTET_LENGTH_PTR), и использует новые значения указателя, чтобы получить значения данных.

Эти поля допустимы только для возвращающих табличное значение параметров и не учитываются для всех остальных типов данных.

Поле SQL_CA_SS_TYPE_NAME не является обязательным для вызовов хранимых процедур. Оно должно быть указано для инструкций SQL, не являющихся вызовами процедур, чтобы разрешить серверу определять тип возвращающего табличное значение параметра.

Если необходимо имя типа и тип таблицы для возвращающего табличное значение параметра определяется в схеме, отличной от этой хранимой процедуры, то значение SQL_CA_SS_TYPE_SCHEMA_NAME должно быть задано в дескрипторе параметра реализации. Иначе сервер не сможет определить тип возвращающего табличное значение параметра. Это приведет к ошибке при вызове SQLExecute или SQLExecDirect. Ошибка будет иметь статус SQLSTATE= 07006 и сообщение «Нарушение атрибута ограниченного типа данных».

Столбцы возвращающего табличное значение параметра могут использовать привязки на уровне столбца или строки. По умолчанию используется привязка на уровне столбца. Установив параметр SQL_ATTR_PARAM_BIND_TYPE и SQL_ATTR_ PARAM_BIND_OFFSET_PTR, можно указать привязку на уровне строки. Это аналогично привязке на уровне строки столбцов и параметров.

Атрибуты SQL_CA_SS_TYPE_CATALOG_NAME и SQL_CA_SS_TYPE_SCHEMA_NAME могут также использоваться для получения каталога и схемы, связанных с параметрами определяемых пользователем типов данных CLR. Это альтернатива для существующих атрибутов схемы каталога, зависящих от типа, для этих типов.

См. также:

Возвращающие табличное значение параметры (ODBC)