Дополнительные метаданные параметра, возвращающего табличное значение
Для получения метаданных для табличного параметра приложение вызывает 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 с каталогом, содержащим компонент сервера, завершатся ошибкой.