V SQL Server, COLUMNPROPERTY()
funkce vrací informace o sloupci nebo parametru.
Můžete jej použít například k vrácení informací o sloupci v tabulce, parametru pro uloženou proceduru atd
Přijímá tři argumenty:ID tabulky nebo procedury, příslušný sloupec nebo parametr a vlastnost, o které chcete informace.
Syntaxe
Syntaxe vypadá takto:
COLUMNPROPERTY ( id , column , property )
Příklad 1 – Dotaz na tabulku
V tomto příkladu získám informace o sloupci v tabulce.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Výsledek:
+----------+ | Result | |----------| | 0 | +----------+
V tomto případě sloupec ArtistId neumožňuje hodnoty NULL.
Pojďme se přepnout na jiný sloupec:
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];
Výsledek:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
V tomto případě sloupec ActiveFrom povoluje hodnoty NULL. Má také přesnost 10 a stupnici 0.
Všimnete si, že používám OBJECT_ID()
funkce pro vrácení ID tabulky. Bez této funkce bych potřeboval znát ID (nebo bych musel udělat další dotaz, abych ID získal).
Zde je OBJECT_ID()
vrací ve výše uvedeném příkladu:
SELECT OBJECT_ID('Artists') AS Result;
Výsledek:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Takže teď, když známe ID, můžeme ho předat do COLUMNPROPERTY()
funkce místo toho:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Výsledek:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Příklad 2 – Dotaz na proceduru
V tomto příkladu získám informace o parametru uložené procedury.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Výsledek:
+----------+ | Result | |----------| | 0 | +----------+
Takže je to úplně stejná syntaxe. V tomto případě parametr @ArtistId
není výstupní parametr.
Úplný seznam možností
Zde je úplný seznam argumentů, které můžete předat COLUMNPROPERTY()
v době psaní:
- AlowsNull
- ColumnId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- IsComputed
- IsCursorType
- IsDeterministic
- IsFulltextIndexed
- IsHidden
- Identity
- IdNotForRepl
- Je indexovatelné
- IsOutParam
- Je Přesné
- IsRowGuidCol
- JeSparse
- IsSystemVerified
- IsXmlIndexable
- Přesnost
- Měřítko
- Statistická sémantika
- SystemDataAccess
- UserDataAccess
- PoužíváAnsiTrim
Podrobné vysvětlení každé vlastnosti naleznete v dokumentaci společnosti Microsoft.
Viz také OBJECTPROPERTYEX()
pro podobnou funkci, která vrací informace o objektech s rozsahem schématu namísto databází, a DATABASEPROPERTYEX()
který vrací informace o vlastnostech pro databáze.