sp_special_columns (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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
R
retourne 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
V
retourne 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 = ] 'scope'
Étendue minimale requise du ROWID. @scope est char(1), avec la valeur par défaut T
.
- L’étendue
C
spécifie que le ROWID est valide uniquement lorsqu’il est positionné sur cette ligne. - L’étendue
T
spécifie que le ROWID est valide pour la transaction.
[ @nullable = ] 'nullable'
Spécifie si les colonnes spéciales peuvent accepter une NULL
valeur. @nullable est char(1), avec la valeur par défaut U
.
O
spécifie des colonnes spéciales qui n’autorisent pas les valeurs Null.U
spé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 0 toujours . 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 1 toujours :0 = SQL_PC_UNKNOWN 1 = SQL_PC_NOT_PSEUDO 2 = 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
EXEC sp_special_columns @table_name = 'Department',
@table_owner = 'HumanResources';