SQL Serverでは、COLUMNPROPERTY()
関数は列またはパラメータ情報を返します。
たとえば、これを使用して、テーブルの列に関する情報、ストアドプロシージャのパラメータなどを返すことができます
。テーブルまたはプロシージャのID、該当する列またはパラメータ、および情報が必要なプロパティの3つの引数を受け入れます。
構文
構文は次のようになります:
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()
を使用していることに気付くでしょう テーブルのIDを返す関数。この関数がないと、IDを知る必要があります(またはIDを取得するためだけに別のクエリを実行する必要があります)。
OBJECT_ID()
は次のとおりです 上記の例で戻ります:
SELECT OBJECT_ID('Artists') AS Result;
結果:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
IDがわかったので、それを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
- IsComputed
- IsCursorType
- IsDeterministic
- IsFulltextIndexed
- 非表示
- IsIdentity
- IsIdNotForRepl
- IsIndexable
- IsOutParam
- IsPrecise
- IsRowGuidCol
- IsSparse
- IsSystemVerified
- IsXmlIndexable
- 精度
- スケール
- StatisticsSemantics
- SystemDataAccess
- UserDataAccess
- UsesAnsiTrim
各プロパティの詳細な説明については、Microsoftのドキュメントを参照してください。
OBJECTPROPERTYEX()
も参照してください データベースではなくスキーマスコープのオブジェクトに関する情報を返す同様の関数の場合、およびDATABASEPROPERTYEX()
データベースのプロパティ情報を返します。