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.
Conventions 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 renvoyer des informations de catalogue. name est de type sysname et n'a pas de valeur par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge.[ @table\_owner=\] 'table_owner'
Propriétaire de la table utilisée pour renvoyer des informations de catalogue. owner est de type sysname, avec NULL comme valeur par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise 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, avec NULL comme valeur par défaut. Certains produits SGBD 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 de type char(1), avec R comme valeur par défaut. Le type R fournit la colonne ou le jeu de colonnes optimal qui, par la récupération 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 retourne 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 de 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. L'étendue 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. nullable est de 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 de type 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.
Valeurs des codes de retour
Aucune
Jeux de résultats
Nom de la 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 retourné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
sp_special_columns est équivalent à SQLSpecialColumns dans ODBC. Les résultats obtenus sont triés par SCOPE.
Autorisations
Nécessite une 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 AdventureWorks2012;
GO
EXEC sp_special_columns @table_name = 'Department'
,@table_owner = 'HumanResources';