Дополнительные метаданные возвращающего табличное значение параметра
Чтобы получить метаданные для возвращающего табличное значение параметра, приложение вызывает 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 | Целое число | NULL |
BUFFER_LENGTH | Целочисленный тип | 0 |
DECIMAL_DIGITS | Smallint | NULL |
NUM_PREC_RADIX | Smallint | NULL |
NULLABLE | Smallint, не NULL | SQL_NULLABLE |
ПРИМЕЧАНИЯ | 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 | Integer, не NULL | Порядковый номер параметра. |
IS_NULLABLE | Varchar | "YES" |
SS_TYPE_CATALOG_NAME | WVarchar(128), не 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 с каталогом, содержащим серверный компонент, завершаются ошибкой.