W SQL Server, COLUMNPROPERTY() funkcja zwraca informacje o kolumnie lub parametrze.
Na przykład możesz go użyć do zwrócenia informacji o kolumnie w tabeli, parametrze procedury składowanej itp.
Akceptuje trzy argumenty:identyfikator tabeli lub procedury, odpowiednia kolumna lub parametr oraz właściwość, o której chcesz uzyskać informacje.
Składnia
Składnia wygląda tak:
COLUMNPROPERTY ( id , column , property )
Przykład 1 – Zapytanie do tabeli
W tym przykładzie otrzymuję informacje o kolumnie w tabeli.
USE Music;
SELECT
COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Wynik:
+----------+ | Result | |----------| | 0 | +----------+
W takim przypadku kolumna ArtistId nie zezwala na wartości NULL.
Przejdźmy do innej kolumny:
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];
Wynik:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
W takim przypadku kolumna ActiveFrom dopuszcza wartości NULL. Ma również precyzję 10 i skalę 0.
Zauważysz, że używam OBJECT_ID() funkcja zwracająca identyfikator tabeli. Bez tej funkcji musiałbym znać identyfikator (lub musiałbym wykonać inne zapytanie tylko po to, aby uzyskać identyfikator).
Oto, co OBJECT_ID() zwraca w powyższym przykładzie:
SELECT OBJECT_ID('Artists') AS Result;
Wynik:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Więc teraz, gdy znamy identyfikator, możemy przekazać go do COLUMNPROPERTY() funkcja zamiast:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Wynik:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Przykład 2 – Zapytanie o procedurę
W tym przykładzie otrzymuję informacje o parametrze procedury składowanej.
USE Music;
SELECT
COLUMNPROPERTY(
OBJECT_ID('dbo.uspGetAlbumsByArtist'),
'@ArtistId',
'IsOutParam') AS [Result];
Wynik:
+----------+ | Result | |----------| | 0 | +----------+
To jest dokładnie ta sama składnia. W tym przypadku parametr @ArtistId nie jest parametrem wyjściowym.
Pełna lista opcji
Oto pełna lista argumentów, które możesz przekazać do COLUMNPROPERTY() w momencie pisania:
- Zezwala na wartość Null
- Identyfikator kolumny
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- Jest obliczany
- IsCursorType
- Jest deterministyczny
- IsFulltextIndexed
- Jest ukryty
- Identity
- IsIdNotForRepl
- Jest indeksowalny
- IsOutParam
- Jest precyzyjny
- IsRowGuidCol
- IsSparse
- Zweryfikowano system
- IsXmlIndexable
- Precyzja
- Skala
- Semantyka statystyczna
- Dostęp do danych systemowych
- Dostęp do danych użytkownika
- Używa AnsiTrim
Zapoznaj się z dokumentacją firmy Microsoft, aby uzyskać szczegółowe wyjaśnienie każdej właściwości.
Zobacz także OBJECTPROPERTYEX() dla podobnej funkcji, która zwraca informacje o obiektach o zakresie schematu zamiast baz danych i DATABASEPROPERTYEX() który zwraca informacje o właściwościach dla baz danych.