Дополнительные метаданные возвращающего табличное значение параметра
Для получения метаданных возвращающего табличное значение параметра приложение вызывает функцию 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 |
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 |
Integer, не NULL |
Порядковый номер параметра. |
IS_NULLABLE |
Varchar |
"YES" |
SS_TYPE_CATALOG_NAME |
WVarchar(128), не NULL |
Каталог, содержащий определение табличного типа для возвращающего табличное значение параметра. |
SS_TYPE_SCHEMA_NAME |
WVarchar(128), не NULL |
Схема, содержащая определение табличного типа для возвращающего табличное значение параметра. |
Столбцы типа WVarchar в спецификации ODBC определяются как тип Varchar, но в действительности во всех последних драйверах SQL Server ODBC возвращаются как WVarchar. Это изменение было сделано, когда к спецификации 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 с каталогом, содержащим компонент сервера, завершатся ошибкой.