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.