Тип ODBC SQL для параметров, возвращающих табличное значение

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

Поддержка возвращающих табличное значение параметров обеспечивается новым типом ODBC SQL — SQL_SS_TABLE.

Комментарии

SQL_SS_TABLE нельзя преобразовать в любой другой тип данных ODBC или SQL Server.

Если SQL_SS_TABLE используется в качестве типа данных C в параметре ValueType объекта SQLBindParameter или предпринята попытка задать SQL_DESC_TYPE в записи дескриптора параметра приложения (APD) SQL_SS_TABLE, возвращается SQL_ERROR и создается диагностическая запись с sqlSTATE=HY003, "Недопустимый тип буфера приложения".

Если SQL_DESC_TYPE устанавливается в IPD-записи в значение SQL_SS_TABLE, а соответствующая запись дескриптора параметра приложения не SQL_C_DEFAULT, то возвращается значение SQL_ERROR и создается диагностическая запись с кодом SQLSTATE=HY003 и сообщением «Недопустимый тип буфера приложения». Это может произойти с параметром ParameterType объекта SQLSetDescField, SQLSetDescRec или SQLBindParameter.

Если параметр TargetType SQL_SS_TABLE при вызове SQLGetData, возвращается SQL_ERROR и создается диагностическая запись с sqlSTATE=HY003, "Недопустимый тип буфера приложения".

Столбец возвращающего табличное значение параметра не может привязываться в виде типа SQL_SS_TABLE. Если функция SQLBindParameter вызывается с параметром ParameterType типа SQL_SS_TABLE, то возвращается значение SQL_ERROR и создается диагностическая запись с кодом SQLSTATE=HY004 и сообщением «Недопустимый тип данных SQL». Это также может произойти с SQLSetDescField и SQLSetDescRec.

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

Возвращающий табличное значение параметр может быть входным только в SQL Server 2008 (10.0.x) или более поздней версии. При попытке задать SQL_DESC_PARAMETER_TYPE значение, отличное от SQL_PARAM_INPUT с помощью SQLBindParameter или SQLSetDescField, возвращается SQL_ERROR и добавляется диагностическая запись с sqlSTATE=HY105 и сообщением "Недопустимый тип параметра".

Столбцы возвращающего табличное значение параметра не могут использовать в качестве параметра StrLen_or_IndPtrзначение SQL_DEFAULT_PARAM, так как значения по умолчанию не поддерживаются возвращающими табличное значение параметрами. Вместо этого приложение может установить атрибут столбца SQL_CA_SS_COL_HAS_DEFAULT_VALUE в значение 1. Это значит, что во всех строках столбца будут значения по умолчанию. Если StrLen_or_IndPtr задано значение SQL_DEFAULT_PARAM, SQLExecute или SQLExecDirect вернет SQL_ERROR, а в инструкцию будет добавлена диагностическая запись с sqlSTATE=HY090 и сообщением "Недопустимая длина строки или буфера".

См. также:

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