Compartir a través de


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';