В SQL Server, COLUMNPROPERTY()
функцията връща информация за колона или параметър.
Например, можете да го използвате, за да върнете информация за колона в таблица, параметър за съхранена процедура и т.н.
Той приема три аргумента:идентификационният номер на таблицата или процедурата, приложимата колона или параметър и свойството, за което искате информация.
Синтаксис
Синтаксисът е така:
COLUMNPROPERTY ( id , column , property )
Пример 1 – Запитване на таблица
В този пример получавам информация за колона в таблица.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Резултат:
+----------+ | Result | |----------| | 0 | +----------+
В този случай колоната ArtistId не позволява стойности NULL.
Нека преминем към друга колона:
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];
Резултат:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
В този случай колоната ActiveFrom позволява NULL стойности. Освен това има точност от 10 и скала от 0.
Ще забележите, че използвам OBJECT_ID()
функция за връщане на идентификатора на таблицата. Без тази функция ще трябва да знам идентификатора (или ще трябва да направя друга заявка, само за да получа идентификатора).
Ето какво означава OBJECT_ID()
връща в горния пример:
SELECT OBJECT_ID('Artists') AS Result;
Резултат:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Така че сега, когато знаем идентификатора, можем да го предадем на COLUMNPROPERTY()
функция вместо това:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Резултат:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Пример 2 – Запитване на процедура
В този пример получавам информация за параметър на съхранена процедура.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Резултат:
+----------+ | Result | |----------| | 0 | +----------+
Така че това е абсолютно същият синтаксис. В този случай параметърът @ArtistId
не е изходен параметър.
Пълен списък с опции
Ето пълен списък с аргументи, които можете да предадете на COLUMNPROPERTY()
към момента на писане:
- AllowsNull
- ColumnId
- FullTextTypeColumn
- GeneratedAlwaysType
- IsColumnSet
- Изчислено е
- IsCursorType
- Едетерминистично
- IsFulltextIndexed
- Скрит е
- IsIdentity
- IsIdNotForRepl
- Индексира се
- IsOutParam
- Е точен
- IsRowGuidCol
- IsSparse
- SystemVerified
- IsXmlIndexable
- Прецизност
- Мащаб
- Статистическа семантика
- SystemDataAccess
- UserDataAccess
- UsesAnsiTrim
Вижте документацията на Microsoft за подробно обяснение на всяко свойство.
Вижте също OBJECTPROPERTYEX()
за подобна функция, която връща информация за обекти с обхват на схема, а не за бази данни, и DATABASEPROPERTYEX()
който връща информация за свойствата за бази данни.