In SQL Server, de COLUMNPROPERTY()
functie retourneert kolom- of parameterinformatie.
U kunt het bijvoorbeeld gebruiken om informatie terug te geven over een kolom in een tabel, een parameter voor een opgeslagen procedure, enz.
Het accepteert drie argumenten:de ID van de tabel of procedure, de toepasselijke kolom of parameter en de eigenschap waarover u informatie wilt.
Syntaxis
De syntaxis gaat als volgt:
COLUMNPROPERTY ( id , column , property )
Voorbeeld 1 – Een tabel opvragen
In dit voorbeeld krijg ik informatie over een kolom in een tabel.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Resultaat:
+----------+ | Result | |----------| | 0 | +----------+
In dit geval staat de ArtistId-kolom geen NULL-waarden toe.
Laten we overschakelen naar een andere kolom:
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];
Resultaat:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
In dit geval staat de ActiveFrom-kolom wel NULL-waarden toe. Het heeft ook een precisie van 10 en een schaal van 0.
Je zult merken dat ik de OBJECT_ID()
. gebruik functie om de ID van de tabel te retourneren. Zonder deze functie zou ik de ID moeten weten (of ik zou nog een zoekopdracht moeten doen om de ID te krijgen).
Dit is wat OBJECT_ID()
retourneert in het bovenstaande voorbeeld:
SELECT OBJECT_ID('Artists') AS Result;
Resultaat:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Dus nu we de ID weten, kunnen we die doorgeven aan de COLUMNPROPERTY()
functie in plaats daarvan:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Resultaat:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Voorbeeld 2 – Een procedure opvragen
In dit voorbeeld krijg ik informatie over een parameter van een opgeslagen procedure.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Resultaat:
+----------+ | Result | |----------| | 0 | +----------+
Het is dus precies dezelfde syntaxis. In dit geval is de parameter @ArtistId
is geen uitvoerparameter.
Volledige lijst met opties
Hier is een volledige lijst met argumenten die u kunt doorgeven aan COLUMNPROPERTY()
op het moment van schrijven:
- AllowsNull
- Kolom-ID
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsBerekend
- IsCursorType
- IsDeterministisch
- IsFulltextIndexed
- IsHidden
- IsIdentity
- IdNotForRepl
- IsIndexable
- IsOutParam
- IsPrecise
- IsRowGuidCol
- IsSparse
- IsSystemVerified
- IsXmlIndexable
- Precisie
- Schaal
- Statistische semantiek
- SystemDataAccess
- Gebruikersgegevenstoegang
- GebruiktAnsiTrim
Zie de Microsoft-documentatie voor een gedetailleerde uitleg van elke eigenschap.
Zie ook OBJECTPROPERTYEX()
voor een vergelijkbare functie die informatie retourneert over objecten met een schema in plaats van databases, en DATABASEPROPERTYEX()
die eigenschapsinformatie voor databases retourneert.