Metadatos de parámetros con valores de tabla adicionales
Cuando las aplicaciones necesitan recuperar metadatos de parámetros con valores de tabla, llaman a SQLProcedureColumns. Para un parámetro con valores de tabla, SQLProcedureColumns devuelve una fila única. Se han agregado dos columnas específicas de SQL Server adicionales, SS_TYPE_CATALOG_NAME y SS_TYPE_SCHEMA_NAME, para proporcionar información de esquema y catálogo para los tipos de tabla asociados a parámetros con valores de tabla. De acuerdo con la especificación ODBC, SS_TYPE_CATALOG_NAME y SS_TYPE_SCHEMA_NAME aparecen antes de todas las columnas específicas del controlador agregadas en versiones anteriores de SQL Server y después de todas las columnas asignadas por el propio ODBC.
En la tabla siguiente se enumeran las columnas que son significativas para los parámetros con valores de tabla.
Nombre de columna |
Tipo de datos |
Valor/comentarios |
---|---|---|
DATA_TYPE |
Smallint no NULL |
SQL_SS_TABLE |
TYPE_NAME |
WVarchar (128) no NULL |
El nombre del tipo del parámetro con valores de tabla. |
COLUMN_SIZE |
Integer |
NULL |
BUFFER_LENGTH |
Integer |
0 |
DECIMAL_DIGITS |
Smallint |
NULL |
NUM_PREC_RADIX |
Smallint |
NULL |
NULLABLE |
Smallint no NULL |
SQL_NULLABLE |
REMARKS |
Varchar |
NULL |
COLUMN_DEF |
WVarchar(4000) |
NULL |
SQL_DATA_TYPE |
Smallint no NULL |
SQL_SS_TABLE |
SQL_DATETIME_SUB |
Smallint |
NULL |
CHAR_OCTET_LENGTH |
Integer |
NULL |
ORDINAL_POSITION |
Integer no NULL |
La posición ordinal del parámetro. |
IS_NULLABLE |
Varchar |
"YES" |
SS_TYPE_CATALOG_NAME |
WVarchar (128) no NULL |
El catálogo que contiene la definición del tipo de tabla del parámetro con valores de tabla. |
SS_TYPE_SCHEMA_NAME |
WVarchar (128) no NULL |
El esquema que contiene la definición del tipo de tabla del parámetro con valores de tabla. |
Las columnas WVarchar se definen como Varchar en la especificación de ODBC, pero realmente se devuelven como WVarchar en todos los controladores ODBC de SQL Server recientes. Este cambio se realizó cuando se agregó la compatibilidad con Unicode a la especificación de ODBC 3.5, pero no se declaró de forma explícita.
Para obtener metadatos adicionales para los parámetros con valores de tabla, la aplicación utiliza las funciones de catálogo SQLColumns y SQLPrimaryKeys. Antes de llamar a estas funciones para los parámetros con valores de tabla, la aplicación debe establecer el atributo SQL_SOPT_SS_NAME_SCOPE de la instrucción en SQL_SS_NAME_SCOPE_TABLE_TYPE. Este valor indica que la aplicación necesita metadatos para un tipo de tabla en lugar de una tabla real. A continuación, la aplicación pasa el TYPE_NAME del parámetro con valores de tabla como el parámetro TableName. SS_TYPE_CATALOG_NAME y SS_TYPE_SCHEMA_NAME se utilizan con los parámetros SchemaName y CatalogName respectivamente para identificar el catálogo y el esquema para el parámetro con valores de tabla. Cuando una aplicación ha terminado de recuperar los metadatos para los parámetros con valores de tabla, debe volver a establecer SQL_SOPT_SS_NAME_SCOPE en su valor predeterminado de SQL_SS_NAME_SCOPE_TABLE.
Si SQL_SOPT_SS_NAME_SCOPE está establecido en SQL_SS_NAME_SCOPE_TABLE, las consultas a los servidores vinculados producen un error. Las llamadas a SQLColumns o SQLPrimaryKeys con un catálogo que contenga un componente del servidor no podrán realizarse.