I SQL Server, COLUMNPROPERTY()
funktion returnerar kolumn- eller parameterinformation.
Du kan till exempel använda den för att returnera information om en kolumn i en tabell, en parameter för en lagrad procedur, etc.
Den accepterar tre argument:ID:t för tabellen eller proceduren, den tillämpliga kolumnen eller parametern och egenskapen du vill ha information om.
Syntax
Syntaxen ser ut så här:
COLUMNPROPERTY ( id , column , property )
Exempel 1 – Fråga efter en tabell
I det här exemplet får jag information om en kolumn i en tabell.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Resultat:
+----------+ | Result | |----------| | 0 | +----------+
I det här fallet tillåter inte kolumnen ArtistId NULL-värden.
Låt oss byta till en annan kolumn:
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];
Resultat:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
I det här fallet tillåter kolumnen ActiveFrom NULL-värden. Den har också en precision på 10 och en skala på 0.
Du kommer att märka att jag använder OBJECT_ID()
funktion för att returnera tabellens ID. Utan den här funktionen skulle jag behöva känna till ID:t (eller så skulle jag behöva göra en annan fråga bara för att få ID).
Här är vad OBJECT_ID()
returnerar i exemplet ovan:
SELECT OBJECT_ID('Artists') AS Result;
Resultat:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Så nu när vi känner till ID:t kan vi skicka det till COLUMNPROPERTY()
funktion istället:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Resultat:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Exempel 2 – Fråga efter en procedur
I det här exemplet får jag information om en parameter för en lagrad procedur.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Resultat:
+----------+ | Result | |----------| | 0 | +----------+
Så det är exakt samma syntax. I det här fallet, parametern @ArtistId
är inte en utdataparameter.
Fullständig lista över alternativ
Här är en fullständig lista över argument som du kan skicka till COLUMNPROPERTY()
i skrivande stund:
- AllowsNull
- ColumnId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsComputed
- IsCursorType
- Är deterministisk
- IsFulltextIndexed
- IsHidded
- IsIdentity
- IsIdNotForRepl
- Är indexerbar
- IsOutParam
- Är Precis
- IsRowGuidCol
- IsSparse
- IsSystemVerified
- IsXmlIndexable
- Precision
- Skala
- StatisticalSemantics
- SystemDataAccess
- UserDataAccess
- Använder AnsiTrim
Se Microsofts dokumentation för en detaljerad förklaring av varje egenskap.
Se även OBJECTPROPERTYEX()
för en liknande funktion som returnerar information om schemaomfattade objekt snarare än databaser, och DATABASEPROPERTYEX()
som returnerar egenskapsinformation för databaser.