I SQL Server er COLUMNPROPERTY()
funktion returnerer kolonne- eller parameteroplysninger.
For eksempel kan du bruge den til at returnere information om en kolonne i en tabel, en parameter for en lagret procedure osv.
Den accepterer tre argumenter:ID'et for tabellen eller proceduren, den relevante kolonne eller parameter og den egenskab, du ønsker information om.
Syntaks
Syntaksen ser sådan ud:
COLUMNPROPERTY ( id , column , property )
Eksempel 1 – Forespørg en tabel
I dette eksempel får jeg information om en kolonne i en tabel.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Resultat:
+----------+ | Result | |----------| | 0 | +----------+
I dette tilfælde tillader kolonnen ArtistId ikke NULL-værdier.
Lad os skifte til en anden kolonne:
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 dette tilfælde tillader kolonnen ActiveFrom NULL-værdier. Den har også en præcision på 10 og en skala på 0.
Du vil bemærke, at jeg bruger OBJECT_ID()
funktion for at returnere tabellens ID. Uden denne funktion skulle jeg kende id'et (eller jeg skulle lave en anden forespørgsel bare for at få id'et).
Her er hvad OBJECT_ID()
returnerer i ovenstående eksempel:
SELECT OBJECT_ID('Artists') AS Result;
Resultat:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Så nu hvor vi kender ID'et, kunne vi videregive det til COLUMNPROPERTY()
funktion i stedet:
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 | +--------------+-------------+---------+
Eksempel 2 – Forespørg på en procedure
I dette eksempel får jeg information om en parameter i en lagret procedure.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Resultat:
+----------+ | Result | |----------| | 0 | +----------+
Så det er nøjagtig den samme syntaks. I dette tilfælde parameteren @ArtistId
er ikke en outputparameter.
Fuld liste over muligheder
Her er en komplet liste over argumenter, du kan sende til COLUMNPROPERTY()
i skrivende stund:
- TilladerNull
- ColumnId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsComputed
- IsCursorType
- Er deterministisk
- IsFulltextIndexed
- Er Skjult
- IsIdentity
- IsIdNotForRepl
- Kan indekseres
- IsOutParam
- Er Præcis
- IsRowGuidCol
- IsSparse
- Er SystemVerified
- IsXmlIndexable
- Nøjagtighed
- Skala
- Statistisk semantik
- SystemDataAccess
- Brugerdataadgang
- Bruger AnsiTrim
Se Microsoft-dokumentationen for en detaljeret forklaring af hver egenskab.
Se også OBJECTPROPERTYEX()
for en lignende funktion, der returnerer information om skema-omfattede objekter i stedet for databaser, og DATABASEPROPERTYEX()
der returnerer ejendomsoplysninger til databaser.