In SQL Server die COLUMNPROPERTY()
Funktion gibt Spalten- oder Parameterinformationen zurück.
Sie können damit beispielsweise Informationen über eine Spalte in einer Tabelle, einen Parameter für eine gespeicherte Prozedur usw. zurückgeben
Es akzeptiert drei Argumente:die ID der Tabelle oder Prozedur, die zutreffende Spalte oder den Parameter und die Eigenschaft, über die Sie Informationen wünschen.
Syntax
Die Syntax lautet wie folgt:
COLUMNPROPERTY ( id , column , property )
Beispiel 1 – Abfrage einer Tabelle
In diesem Beispiel erhalte ich Informationen über eine Spalte innerhalb einer Tabelle.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Ergebnis:
+----------+ | Result | |----------| | 0 | +----------+
In diesem Fall erlaubt die ArtistId-Spalte keine NULL-Werte.
Wechseln wir zu einer anderen Spalte:
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];
Ergebnis:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
In diesem Fall lässt die ActiveFrom-Spalte NULL-Werte zu. Es hat auch eine Genauigkeit von 10 und eine Skalierung von 0.
Sie werden feststellen, dass ich die OBJECT_ID()
verwende Funktion, um die ID der Tabelle zurückzugeben. Ohne diese Funktion müsste ich die ID kennen (oder ich müsste eine weitere Abfrage durchführen, nur um die ID zu erhalten).
Hier ist was OBJECT_ID()
gibt im obigen Beispiel zurück:
SELECT OBJECT_ID('Artists') AS Result;
Ergebnis:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Da wir nun also die ID kennen, könnten wir diese an COLUMNPROPERTY()
übergeben Funktion stattdessen:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Ergebnis:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Beispiel 2 – Abfrage einer Prozedur
In diesem Beispiel erhalte ich Informationen über einen Parameter einer gespeicherten Prozedur.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Ergebnis:
+----------+ | Result | |----------| | 0 | +----------+
Es ist also genau die gleiche Syntax. In diesem Fall der Parameter @ArtistId
ist kein Ausgabeparameter.
Vollständige Liste der Optionen
Hier ist eine vollständige Liste der Argumente, die Sie an COLUMNPROPERTY()
übergeben können zum Zeitpunkt des Schreibens:
- ErlaubtNull
- Spalten-ID
- FullTextTypeColumn
- GeneratedAlwaysType
- IstColumnSet
- Wird berechnet
- IstCursorType
- Ist deterministisch
- IstVolltextIndexiert
- Ist ausgeblendet
- IstIdentität
- IsIdNotForRepl
- IstIndexierbar
- IstOutParam
- IstPräzise
- IsRowGuidCol
- IstSparse
- IstSystemverifiziert
- IsXmlIndexable
- Präzision
- Skalieren
- Statistische Semantik
- Systemdatenzugriff
- Benutzerdatenzugriff
- VerwendetAnsiTrim
Eine detaillierte Erklärung jeder Eigenschaft finden Sie in der Microsoft-Dokumentation.
Siehe auch OBJECTPROPERTYEX()
für eine ähnliche Funktion, die Informationen über schemabezogene Objekte anstelle von Datenbanken zurückgibt, und DATABASEPROPERTYEX()
das Eigenschaftsinformationen für Datenbanken zurückgibt.