Compartir a través de


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.

Icono de vínculo a temasConvenciones 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 ningún 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 con el valor de name especificado, este procedimiento busca una tabla con el 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 la 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 existen, 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 sólo cuando se coloca en esa fila. El ámbito T especifica que el 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 que se está utilizando. ODBCVer es de tipo int(4) y su valor predeterminado es 2, que 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 actual del Id. 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 sólo 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 Id. de fila es válido mientras dura 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

Notas

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 AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department' 
    ,@table_owner = 'HumanResources';