sp_special_columns (Transact-SQL)
Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada
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.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_special_columns
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @col_type = ] 'col_type' ]
[ , [ @scope = ] 'scope' ]
[ , [ @nullable = ] 'nullable' ]
[ , [ @ODBCVer = ] ODBCVer ]
[ ; ]
Argumentos
[ @table_name = ] N'table_name'
Nombre de la tabla utilizada para devolver información del catálogo. @table_name es sysname, sin ningún valor predeterminado. No se admite la coincidencia de patrones comodín.
[ @table_owner = ] N'table_owner'
Propietario de la tabla que se usa para devolver información del catálogo. @table_owner es sysname, con un valor predeterminado de NULL
. No se admite la coincidencia de patrones comodín. Si no se especifica @table_owner , se aplican las reglas de visibilidad de tabla predeterminadas del sistema de administración de bases de datos (DBMS) subyacente.
En SQL Server, si el usuario actual posee una tabla con el nombre especificado, se devuelven las columnas de esa tabla. Si no se especifica @table_owner y el usuario actual no posee una tabla del @table_name especificado, este procedimiento busca una tabla del @table_name especificado propiedad del propietario de la base de datos. Si la tabla existe, se devuelven sus columnas.
[ @table_qualifier = ] N'table_qualifier'
Nombre del calificador de tabla. @table_qualifier es sysname, con un valor predeterminado de NULL
. Varios productos de DBMS admiten la nomenclatura de tres partes para 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'
El tipo de columna. @col_type es char(1), con un valor predeterminado de R
.
El tipo
R
devuelve la columna o conjunto óptimo de columnas que, al recuperar valores de la columna o columnas, permite identificar de forma única cualquier fila de la tabla especificada. Una columna puede ser una pseudocolumna diseñada para este propósito, o bien la columna o columnas de cualquier índice único para la tabla.Type
V
devuelve la columna o columnas de la tabla especificada, si existe, que el origen de datos actualiza automáticamente cuando cualquier transacción actualiza cualquier valor de la fila.
[ @scope = ] 'scope'
Ámbito mínimo necesario de ROWID. @scope es char(1), con un valor predeterminado de T
.
- Scope
C
especifica que ROWID solo es válido cuando se coloca en esa fila. - Scope
T
especifica que ROWID es válido para la transacción.
[ @nullable = ] 'nullable'
Especifica si las columnas especiales pueden aceptar un NULL
valor. @nullable es char(1), con un valor predeterminado de U
.
O
especifica columnas especiales que no permiten valores NULL.U
especifica las columnas que admiten valores NULL parcialmente.
[ @ODBCVer = ] ODBCVer
La versión ODBC que se está usando. @ODBCVer es int, con un valor predeterminado de 2
. Este valor indica la versión 2.0 de ODBC. Para obtener más información sobre la diferencia entre ODBC versión 2.0 y ODBC versión 3.0, consulte la especificación ODBC SQLSpecialColumns
para ODBC versión 3.0.
Valores de código de retorno
Ninguno.
Conjunto de resultados
Nombre de la 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 con el identificador de fila podría no devolver una fila si otra transacción actualizó o eliminó 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 del @table_name devuelto. 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, necesaria para el tipo de datos en su formato binario en el origen de datos, por ejemplo, 10 para char(10), 4 para enteros y 2 para smallint. |
SCALE |
smallint | Escala de la columna en el origen de datos. NULL se devuelve para los tipos de datos para los que la escala no es aplicable. |
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 mediante SCOPE
.
Permisos
Es necesario contar con un permiso de tipo SELECT
sobre 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 AdventureWorks2022;
GO
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';