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


Дополнительные метаданные параметра, возвращающего табличное значение

Для получения метаданных для табличного параметра приложение вызывает SQLProcedureColumns. Для табличного параметра SQLProcedureColumns возвращает одну строку. Для предоставления сведений о схеме и каталоге для табличных типов, связанных с табличными параметрами, добавлены два столбца SQL Server, SS_TYPE_CATALOG_NAME и SS_TYPE_SCHEMA_NAME. В соответствии со спецификацией ODBC, столбцы SS_TYPE_CATALOG_NAME и SS_TYPE_SCHEMA_NAME появляются перед столбцами, зависящими от драйвера, добавленными в более ранних версиях SQL Server, и после всех столбцов, обязательных для ODBC.

В следующей таблице приводится список столбцов, имеющих отношение к табличным параметрам.

Имя столбца

Тип данных

Значения/комментарии

DATA_TYPE

Smallint, не NULL

SQL_SS_TABLE

TYPE_NAME

WVarchar(128), не NULL

Имя типа табличного параметра.

COLUMN_SIZE

Integer

NULL

BUFFER_LENGTH

Целочисленные

0

DECIMAL_DIGITS

Smallint

NULL

NUM_PREC_RADIX

Smallint

NULL

NULLABLE

Smallint, не NULL

SQL_NULLABLE

REMARKS

Varchar

NULL

COLUMN_DEF

WVarchar(4000)

NULL

SQL_DATA_TYPE

Smallint, не NULL

SQL_SS_TABLE

SQL_DATETIME_SUB

Smallint

NULL

CHAR_OCTET_LENGTH

Целочисленные

NULL

ORDINAL_POSITION

Целочисленные, не равные NULL

Порядковый номер параметра.

Свойство IS_NULLABLE

Varchar

"YES"

SS_TYPE_CATALOG_NAME

WVarchar(128) not NULL

Каталог, содержащий определение табличного типа для параметра, возвращающего табличное значение.

SS_TYPE_SCHEMA_NAME

WVarchar(128), не NULL

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

Столбцы WVarchar определяются как тип Varchar в спецификации ODBC, но в действительности возвращаются как WVarchar во всех последних драйверах SQL Server ODBC. Это изменение было сделано, когда к спецификации ODBC 3.5 была добавлена поддержка Юникода, но не явный вызов.

Чтобы получить дополнительные метаданные для табличных параметров, приложение использует функции каталога SQLColumns и SQLPrimaryKeys. Перед вызовом этих функций для табличных параметров приложение должно присвоить атрибуту инструкции SQL_SOPT_SS_NAME_SCOPE значение SQL_SS_NAME_SCOPE_TABLE_TYPE. Оно указывает, что приложению требуются метаданные для табличного типа, а не для таблицы. Затем приложение передает TYPE_NAME возвращающего табличное значение параметра как TableName. SS_TYPE_CATALOG_NAME и SS_TYPE_SCHEMA_NAME используются с параметрами CatalogName и SchemaName, определяя каталог и схему для возвращающего табличное значение параметра, соответственно. Когда приложение закончит получать метаданные для возвращающего табличное значение параметра, оно должно вновь присвоить SQL_SOPT_SS_NAME_SCOPE значение по умолчанию SQL_SS_NAME_SCOPE_TABLE.

Если SQL_SOPT_SS_NAME_SCOPE имеет значение SQL_SS_NAME_SCOPE_TABLE, то запросы к связанным серверам завершаются ошибкой. Вызовы методов SQLColumns и SQLPrimaryKeys с каталогом, содержащим компонент сервера, завершатся ошибкой.