Поделиться через


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

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

Примечания

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

Если SQL_SS_TABLE используется в параметре ValueType объекта SQLBindParameter в качестве типа данных C, или производится попытка установить 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 и сообщением «Недопустимый тип буфера приложения». Это может произойти с ParameterTypeSQLSetDescField, SQLSetDescRec или SQLBindParameter.

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

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

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

В SQL Server 2008 возвращающий табличное значение параметр может быть только входным параметром. Если производится попытка установки SQL_DESC_PARAMETER_TYPE в значение, отличное от SQL_PARAM_INPUT через SQLBindParameter или SQLSetDescField, то возвращается SQL_ERROR и в инструкцию добавляется запись диагностики с кодом SQLSTATE=HY105 и сообщением «Недопустимый тип параметра».

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