Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
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 Transact-SQL
Syntaxe
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 ]
[ ; ]
Arguments
[ @table_name = ] N’table_name'
Nom de la table utilisée pour retourner les informations du catalogue. @table_name est sysname, sans valeur par défaut. La correspondance des modèles génériques n’est pas prise en charge.
[ @table_owner = ] N’table_owner'
Propriétaire de la table utilisée pour retourner les informations du catalogue.
@table_owner est sysname, avec la valeur par défaut NULL. La correspondance des modèles génériques n’est pas prise en charge. Si @table_owner n’est pas spécifié, les règles de visibilité de table par défaut du système de gestion de base de données sous-jacent (SGBD) s’appliquent.
Dans SQL Server, si l’utilisateur actuel est propriétaire d’une table portant le nom spécifié, les colonnes de cette table sont renvoyées. Si @table_owner n’est pas spécifié et que l’utilisateur actuel ne possède pas de table du @table_name spécifié, cette procédure recherche une table des @table_name spécifiées appartenant au propriétaire de la base de données. Si la table existe, ses colonnes sont retournées.
[ @table_qualifier = ] N’table_qualifier'
Nom du qualificateur de table.
@table_qualifier est sysname, avec la valeur par défaut NULL. Différents produits SGBD prennent en charge le nommage en trois parties pour les tables (<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'
Le type de colonne.
@col_type est char(1), avec la valeur par défaut R.
Le type
Rretourne la colonne ou l’ensemble optimal de colonnes qui, en récupérant des valeurs de la colonne ou des colonnes, permet à n’importe quelle ligne de la table spécifiée d’être identifiée de manière unique. Une colonne peut être un pseudocolumn conçu à cet effet, ou la colonne ou les colonnes d’un index unique pour la table.Le type
Vretourne la colonne ou les colonnes de la table spécifiée, le cas échéant, qui sont automatiquement mises à jour par la source de données lorsqu’une valeur de la ligne est mise à jour par n’importe quelle transaction.
[ @scope = ] 'portée '
Étendue minimale requise du ROWID.
@scope est char(1), avec la valeur par défaut T.
- L’étendue
Cspécifie que le ROWID est valide uniquement lorsqu’il est positionné sur cette ligne. - L’étendue
Tspécifie que le ROWID est valide pour la transaction.
[ @nullable = ] « annulable »
Spécifie si les colonnes spéciales peuvent accepter une NULL valeur.
@nullable est char(1), avec la valeur par défaut U.
-
Ospécifie des colonnes spéciales qui n’autorisent pas les valeurs Null. -
Uspécifie les colonnes partiellement nullables.
[ @ODBCVer = ] ODBCVer
Version ODBC utilisée.
@ODBCVer est int, avec la valeur par défaut 2. Cette valeur indique ODBC version 2.0. Pour plus d’informations sur la différence entre ODBC version 2.0 et ODBC version 3.0, consultez la spécification ODBC pour ODBC SQLSpecialColumns version 3.0.
Valeurs des codes de retour
Aucune.
Jeu de résultats
| Nom de la colonne | Type de données | Description |
|---|---|---|
SCOPE |
smallint | Étendue réelle de l'identificateur de ligne. Peut être 0, 1 ou 2. SQL Server retourne 0toujours . 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. Une nouvelle sélection ultérieure à l’aide de l’ID de ligne peut ne pas retourner une ligne si la ligne a été mise à jour ou supprimée par 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 pour chaque colonne de la @table_name retournée. 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, requise pour le type de données dans sa forme binaire dans la source de données, par exemple, 10 pour char(10), 4 pour entier et 2 pour smallint. |
SCALE |
smallint | Échelle de la colonne dans la source de données.
NULL est retourné pour les types de données pour lesquels la mise à l’échelle n’est pas applicable. |
PSEUDO_COLUMN |
smallint | Indique si la colonne est un pseudocolumn. SQL Server retourne 1toujours :0 = SQL_PC_UNKNOWN1 = SQL_PC_NOT_PSEUDO2 = SQL_PC_PSEUDO |
Notes
sp_special_columns équivaut à SQLSpecialColumns ODBC. Les résultats retournés sont classé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 AdventureWorks2022;
GO
EXECUTE sp_special_columns
@table_name = 'Department',
@table_owner = 'HumanResources';