Partager via


sp_special_columns (Transact-SQL)

Retourne le jeu optimal de colonnes qui identifie de façon unique une ligne d'une table. Retourne également les colonnes automatiquement mises à jour lorsqu'une transaction met à jour une valeur dans la ligne.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_special_columns [@table_name =] 'table_name'   
     [,[@table_owner =] 'table_owner'] 
     [,[@qualifier =] 'qualifier'] 
     [,[@col_type =] 'col_type'] 
     [,[@scope =] 'scope']
     [,[@nullable =] 'nullable'] 
     [,[@ODBCVer =] 'ODBCVer'] ;

Arguments

  • @table_name =] 'table_name'
    Nom de la table utilisée pour retourner les informations du catalogue. L'argument name est du type sysname, sans valeur par défaut. Le filtrage par caractères génériques n'est pas pris en charge.

  • [ @table_owner = ] 'table_owner'
    Nom du propriétaire de la table utilisée pour renvoyer des informations de catalogue. owner est de type sysname. Sa valeur par défaut est NULL. Le filtrage par caractères génériques n'est pas pris en charge. Si l'argument owner n'est pas spécifié, les règles définissant par défaut la visibilité des tables du SGBD sous-jacent s'appliquent.

    Si, dans SQL Server, l'utilisateur actuel est propriétaire d'une table portant le nom spécifié, les colonnes de la table sont retournées. Si la valeur de owner n'est pas spécifiée et que l'utilisateur actuel ne possède pas de table dont la valeur name est spécifiée, cette procédure recherche une table, avec la valeur name spécifiée, qui soit possédée par le propriétaire de la base de données. Si la table existe, ses colonnes sont retournées.

  • [ @qualifier =] 'qualifier'
    Nom du qualificateur de la table. qualifier est de type sysname. Sa valeur par défaut est NULL. Divers produits SGDB prennent en charge les noms de table en trois parties (qualifier.owner.name). Dans SQL Server, cette colonne représente le nom de la base de données. Dans certains produits, elle représente le nom du serveur de l'environnement de base de données de la table.

  • [ @col_type =] 'col_type'
    Type de la colonne. col_type est du type char(1) et a pour valeur par défaut R. Le type R fournit la colonne ou le jeu de colonnes optimal qui, par l'extraction des valeurs de cette ou de ces colonnes, permet d'identifier de manière unique une ligne de la table spécifiée. Une colonne peut être soit une colonne virtuelle spécifiquement créée à cet effet, soit la ou les colonnes d'un index unique de la table. Le type V fournit la ou les colonnes de la table spécifiée qui, le cas échéant, sont automatiquement mises à jour par la source de données lorsqu'une valeur dans la ligne est mise à jour par une transaction.

  • [ @scope =] 'scope'
    Étendue minimale requise de l'identificateur de ligne ROWID. scope est du type char(1), avec T comme valeur par défaut. L'étendue C spécifie que le ROWID n'est valide que lorsqu'il est positionné sur cette ligne. La valeur T indique que le ROWID est valide pour l'ensemble de la transaction.

  • [ @nullable =] 'nullable'
    Permet de savoir si les colonnes spéciales peuvent accepter ou non une valeur NULL. L'argument nullable est du type char(1), avec U comme valeur par défaut. O identifie les colonnes spéciales qui n'acceptent pas de valeur NULL. U identifie les colonnes qui acceptent partiellement des valeurs NULL.

  • [ @ODBCVer = ] 'ODBCVer'
    Version d'ODBC utilisée. ODBCVer est int(4), avec 2 comme valeur par défaut. Cela indique ODBC version 2.0. Pour plus d'informations sur les différences existant entre la version 2.0 et la version 3.0 d'ODBC, consultez la spécification ODBC SQLSpecialColumns pour ODBC version 3.0.

Retourne les values du code

Aucune

Jeux de résultats

Nom de colonne

Type de données

Description

SCOPE

smallint

Étendue réelle de l'identificateur de ligne. Peut prendre les valeurs 0, 1 ou 2. SQL Server retourne toujours 0. Ce champ retourne toujours une valeur.

0 = SQL_SCOPE_CURROW. La validité du numéro d'identification de ligne est garantie uniquement pendant qu'il est positionné sur cette ligne. Il se peut qu'une sélection ultérieure qui utiliserait le numéro d'identification de la ligne ne retourne pas de ligne si celle-ci a été mise à jour ou supprimée au cours d'une autre transaction.

1 = SQL_SCOPE_TRANSACTION. La validité du numéro d'identification de ligne est garantie pour la durée de la transaction en cours.

2 = SQL_SCOPE_SESSION. L'identificateur de ligne est valide pour la durée de la session (parmi les limites de transaction).

COLUMN_NAME

sysname

Nom de colonne de chacune des colonnes de table renvoyées. Ce champ retourne toujours une valeur.

DATA_TYPE

smallint

Type de données ODBC SQL.

TYPE_NAME

sysname

Nom du type de données dépendant de la source de données, par exemple char, varchar, money ou text.

PRECISION

Int

Précision de la colonne dans la source de données. Ce champ retourne toujours une valeur.

LENGTH

Int

Longueur, en octets, nécessaire au type de données, exprimée sous forme binaire dans la source de données, par exemple 10 pour char(10), 4 pour integer et 2 pour smallint.

SCALE

smallint

Échelle de la colonne dans la source de données. La valeur NULL est retournée pour les types de données pour lesquels l'échelle n'est pas applicable.

PSEUDO_COLUMN

smallint

Indique si la colonne est une pseudo-colonne. SQL Server retourne toujours 1 :

0 = SQL_PC_UNKNOWN

1 = SQL_PC_NOT_PSEUDO

2 = SQL_PC_PSEUDO

Notes

La procédure stockée sp_special_columns est équivalente à SQLSpecialColumns dans ODBC. Les résultats obtenus sont triés par SCOPE.

Autorisations

Nécessite l'autorisation SELECT sur le schéma.

Exemples

Cet exemple retourne des informations sur la colonne qui identifie les lignes de manière unique dans la table HumanResources.Department.

USE AdventureWorks;
GO
EXEC sp_special_columns @table_name = 'Department' 
    ,@table_owner = 'HumanResources';