sp_special_columns (Transact-SQL)
Devuelve el conjunto óptimo de columnas que identifican de forma única a una fila de la tabla. También devuelve las columnas actualizadas automáticamente cuando una transacción actualiza cualquier valor de la fila.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_special_columns [ @table_name = ] 'table_name'
[ , [ @table_owner = ] 'table_owner' ]
[ , [ @qualifier = ] 'qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] 'ODBCVer' ]
[ ; ]
Argumentos
[ @table\_name=\] 'table_name'
Es el nombre de la tabla que se utiliza para devolver información de catálogo. name es de tipo sysname y no tiene valor predeterminado. No se admite la coincidencia de patrón de caracteres comodín.[ @table\_owner=\] 'table_owner'
Es el propietario de la tabla que se utiliza para devolver información de catálogo. owner es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Si no se especifica owner, se aplican las reglas predeterminadas de visibilidad de tabla del DBMS subyacente.En SQL Server, si el usuario actual es propietario de una tabla en la que se especifica el nombre, se devuelven las columnas de esa tabla. Si no se especifica owner y el usuario actual no es el propietario de una tabla del valor de name especificado, este procedimiento busca una tabla del valor de name especificado que pertenezca al propietario de la base de datos. Si la tabla existe, se devuelven sus columnas.
[ @qualifier=\] 'qualifier'
Es el nombre del calificador de tabla. qualifier es de tipo sysname y su valor predeterminado es NULL. Varios productos DBMS admiten nombres de tres partes para las tablas (qualifier.owner.name). En SQL Server, esta columna representa el nombre de la base de datos. En algunos productos, representa el nombre del servidor del entorno de base de datos de la tabla.[ @col\_type=\] 'col_type'
Es el tipo de columna. col_type es de tipo char(1) y su valor predeterminado es R. El tipo R devuelve la columna óptima o el conjunto de columnas que, al recuperar valores de la columna o columnas, permite que cualquier fila de la tabla especificada pueda identificarse de forma única. Una columna puede ser una pseudocolumna diseñada específicamente para este propósito o bien la columna o columnas de cualquier índice único de la tabla. El tipo V devuelve la columna o columnas de la tabla especificada, si las hay, que el origen de datos actualiza automáticamente cuando una transacción actualiza cualquier valor de la fila.[ @scope=\] 'scope'
Es el ámbito mínimo necesario del ROWID. scope es de tipo char(1) y su valor predeterminado es T. El ámbito C especifica que el ROWID es válido solo cuando se coloca en esa fila. El ámbito T especifica que ROWID es válido para la transacción.[ @nullable=\] 'nullable'
Indica si las columnas especiales pueden o no aceptar un valor NULL. nullable es de tipo char(1) y su valor predeterminado es U. O especifica columnas especiales que no admiten valores NULL. U especifica columnas que admiten parcialmente valores NULL.[ @ODBCVer=\] 'ODBCVer'
Es la versión de ODBC utilizada. ODBCVer es de tipo int(4) y su valor predeterminado es 2. Esto indica ODBC versión 2.0. Para obtener más información acerca de las diferencias entre ODBC versión 2.0 y ODBC versión 3.0, vea la especificación SQLSpecialColumns para ODBC versión 3.0.
Valores de código de retorno
Ninguno
Conjuntos de resultados
Nombre de columna |
Tipo de datos |
Descripción |
---|---|---|
SCOPE |
smallint |
Ámbito real del identificador de fila. Puede ser 0, 1 o 2. SQL Server siempre devuelve 0. Este campo siempre devuelve un valor. 0 = SQL_SCOPE_CURROW. Se garantiza que el Id. de fila es válido solo mientras esté colocado en esa fila. Una nueva selección posterior mediante el Id. de fila podría no devolver una fila si otra transacción ha actualizado o eliminado la fila. 1 = SQL_SCOPE_TRANSACTION. Se garantiza que el Id. de fila es válido mientras dura la transacción actual. 2 = SQL_SCOPE_SESSION. Se garantiza que el identificador de fila sea válido mientras dure la sesión (en los límites de la transacción). |
COLUMN_NAME |
sysname |
Nombre de columna para cada columna de tabledevuelta. Este campo siempre devuelve un valor. |
DATA_TYPE |
smallint |
Tipo de datos de ODBC SQL. |
TYPE_NAME |
sysname |
Nombre del tipo de datos dependiente del origen de datos; por ejemplo, char, varchar, money o text. |
PRECISION |
Int |
Precisión de la columna en el origen de datos. Este campo siempre devuelve un valor. |
LENGTH |
Int |
Longitud, en bytes, requerida para el tipo de datos en su forma binaria en el origen de datos, por ejemplo, 10 para char(10), 4 para integer y 2 para smallint. |
SCALE |
smallint |
Escala de la columna en el origen de datos. NULL se devuelve para los tipos de datos a los que no se aplica la escala. |
PSEUDO_COLUMN |
smallint |
Indica si la columna es una pseudocolumna. SQL Server siempre devuelve 1: 0 = SQL_PC_UNKNOWN 1 = SQL_PC_NOT_PSEUDO 2 = SQL_PC_PSEUDO |
Comentarios
sp_special_columns es equivalente a SQLSpecialColumns en ODBC. Los resultados devueltos se ordenan por medio de SCOPE.
Permisos
Requiere el permiso SELECT en el esquema.
Ejemplos
En el siguiente ejemplo se devuelve información acerca de la columna que identifica de forma exclusiva las filas en la tabla HumanResources.Department.
USE AdventureWorks2012;
GO
EXEC sp_special_columns @table_name = 'Department'
,@table_owner = 'HumanResources';