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


Тип 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 и сообщением «Недопустимый тип буфера приложения». Это может произойти с параметром ParameterType функции SQLSetDescField, 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_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 и сообщением «Недопустимая длина строки или буфера».