Dans SQL Server, le COLUMNPROPERTY()
la fonction renvoie des informations sur la colonne ou le paramètre.
Par exemple, vous pouvez l'utiliser pour renvoyer des informations sur une colonne dans une table, un paramètre pour une procédure stockée, etc
Il accepte trois arguments :l'ID de la table ou de la procédure, la colonne ou le paramètre applicable et la propriété sur laquelle vous souhaitez obtenir des informations.
Syntaxe
La syntaxe ressemble à ceci :
COLUMNPROPERTY ( id , column , property )
Exemple 1 – Interroger une table
Dans cet exemple, j'obtiens des informations sur une colonne dans une table.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Résultat :
+----------+ | Result | |----------| | 0 | +----------+
Dans ce cas, la colonne ArtistId n'autorise pas les valeurs NULL.
Passons à une autre colonne :
SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
Résultat :
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Dans ce cas, la colonne ActiveFrom autorise les valeurs NULL. Il a également une précision de 10 et une échelle de 0.
Vous remarquerez que j'utilise le OBJECT_ID()
fonction pour renvoyer l'ID de la table. Sans cette fonction, j'aurais besoin de connaître l'ID (ou j'aurais besoin de faire une autre requête juste pour obtenir l'ID).
Voici ce que OBJECT_ID()
renvoie dans l'exemple ci-dessus :
SELECT OBJECT_ID('Artists') AS Result;
Résultat :
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Maintenant que nous connaissons l'ID, nous pouvons le transmettre à COLUMNPROPERTY()
fonction à la place :
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Résultat :
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Exemple 2 – Interroger une procédure
Dans cet exemple, j'obtiens des informations sur un paramètre d'une procédure stockée.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Résultat :
+----------+ | Result | |----------| | 0 | +----------+
C'est donc exactement la même syntaxe. Dans ce cas, le paramètre @ArtistId
n'est pas un paramètre de sortie.
Liste complète des options
Voici une liste complète des arguments que vous pouvez passer à COLUMNPROPERTY()
au moment de la rédaction :
- AutoriseNull
- ID de colonne
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsComputed
- IsCursorType
- Est déterministe
- IsFulltextIndexed
- Est masqué
- EstIdentité
- IsIdNotForRepl
- Est indexable
- IsOutParam
- Est précis
- IsRowGuidCol
- IsSparse
- IsSystemVerified
- EstXmlIndexable
- Précision
- Échelle
- Sémantique statistique
- Accès aux données système
- Accès aux données utilisateur
- Utilise AnsiTrim
Consultez la documentation Microsoft pour une explication détaillée de chaque propriété.
Voir aussi OBJECTPROPERTYEX()
pour une fonction similaire qui renvoie des informations sur les objets de portée schéma plutôt que sur les bases de données, et DATABASEPROPERTYEX()
qui renvoie des informations de propriété pour les bases de données.