SQL Serverでは、OBJECTPROPERTYEX()
関数は、現在のデータベース内のスキーマスコープのオブジェクトに関する情報を返します。
この関数は、OBJECTPROPERTY()
とまったく同じことを行います 、より多くのプロパティをサポートし、戻り値が異なることを除いて。 OBJECTPROPERTYEX()
関数はsql_variantを返します タイプ、OBJECTPROPERTY()
intを返します タイプ。
構文
この関数は、オブジェクトのIDと返されるプロパティの2つの引数を受け入れます。
OBJECTPROPERTYEX ( id , property )
例1-基本的な使用法
この関数の基本的な使用法を示す例を次に示します。
SELECT OBJECTPROPERTYEX('885578193', 'BaseType') AS Result;
結果:
+----------+ | Result | |----------| | U | +----------+
この場合、IDが885578193
のオブジェクトがあります そしてそれはテーブルです。このオブジェクトのBaseTypeはUです。
例2–オブジェクトの命名
前の例では、オブジェクトのIDを知っていました。ほとんどの場合、オブジェクトの名前だけがわかり、IDはわかりません。このような場合は、OBJECT_ID()
を使用できます 名前に基づいてオブジェクトのIDを取得する関数。
このように:
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'Artists'), 'BaseType') AS Result;
結果:
+----------+ | Result | |----------| | U | +----------+
例3–その他のプロパティ
これは、OBJECTPROPERTY()
では返されないプロパティの多くを返す例です。 。
USE WideWorldImportersDW; DECLARE @objectId int = OBJECT_ID(N'Integration.GenerateDateDimensionColumns'); SELECT OBJECTPROPERTYEX(@objectId, 'BaseType') AS BaseType, OBJECTPROPERTYEX(@objectId, 'IsPrecise') AS IsPrecise, OBJECTPROPERTYEX(@objectId, 'SystemDataAccess') AS SystemDataAccess, OBJECTPROPERTYEX(@objectId, 'UserDataAccess') AS UserDataAccess;
結果:
+------------+-------------+--------------------+------------------+ | BaseType | IsPrecise | SystemDataAccess | UserDataAccess | |------------+-------------+--------------------+------------------| | IF | 0 | 1 | 1 | +------------+-------------+--------------------+------------------+
執筆時点では、OBJECTPROPERTYEX()
関数は109のプロパティをサポートします。この関数でサポートされているプロパティの完全なリストについては、以下を参照してください。
例4–WHERE句内
OBJECTPROPERTYEX()
を使用できます WHERE
必要に応じて条項。
この例では、2つのクエリを実行します。1つは外部キーを持つテーブルを返すもので、もう1つは外部キーによって参照されるテーブルを返すものです。
USE Music; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignKey') = 1; SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables WHERE OBJECTPROPERTYEX(object_id, 'TableHasForeignRef') = 1;
結果:
Changed database context to 'Music'. +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Albums | +----------+---------+ (2 rows affected) +----------+---------+ | Schema | Table | |----------+---------| | dbo | Artists | | dbo | Genres | | dbo | Country | +----------+---------+ (3 rows affected)
プロパティの完全なリスト
OBJECTPROPERTYEX()
でサポートされているプロパティの完全なリストは次のとおりです 機能:
- BaseType
- CnstIsClustKey
- CnstIsColumn
- CnstIsDeleteCascade
- CnstIsDisabled
- CnstIsNonclustKey
- CnstIsNotRepl
- CnstIsNotTrusted
- CnstIsUpdateCascade
- ExecIsAfterTrigger
- ExecIsAnsiNullsOn
- ExecIsDeleteTrigger
- ExecIsFirstDeleteTrigger
- ExecIsFirstInsertTrigger
- ExecIsFirstUpdateTrigger
- ExecIsInsertTrigger
- ExecIsInsteadOfTrigger
- ExecIsLastDeleteTrigger
- ExecIsLastInsertTrigger
- ExecIsLastUpdateTrigger
- ExecIsQuotedIdentOn
- ExecIsStartup
- ExecIsTriggerDisabled
- ExecIsTriggerNotForRepl
- ExecIsUpdateTrigger
- ExecIsWithNativeCompilation
- HasAfterTrigger
- HasDeleteTrigger
- HasInsertTrigger
- HasInsteadOfTrigger
- HasUpdateTrigger
- IsAnsiNullsOn
- IsCheckCnst
- IsConstraint
- IsDefault
- IsDefaultCnst
- IsDeterministic
- IsEncrypted
- 実行済み
- IsExtendedProc
- IsForeignKey
- IsIndexed
- IsIndexable
- IsInlineFunction
- IsMSShipped
- IsPrecise
- IsPrimaryKey
- IsProcedure
- IsQuotedIdentOn
- IsQueue
- IsReplProc
- IsRule
- IsScalarFunction
- IsSchemaBound
- IsSystemTable
- IsSystemVerified
- IsTable
- IsTableFunction
- IsTrigger
- IsUniqueCnst
- IsUserTable
- IsView
- OwnerId
- SchemaId
- SystemDataAccess
- TableDeleteTrigger
- TableDeleteTriggerCount
- TableFullTextMergeStatus
- TableFullTextBackgroundUpdateIndexOn
- TableFulltextCatalogId
- TableFullTextChangeTrackingOn
- TableFulltextDocsProcessed
- TableFulltextFailCount
- TableFulltextItemCount
- TableFulltextKeyColumn
- TableFulltextPendingChanges
- TableFulltextPopulateStatus
- TableFullTextSemanticExtraction
- TableHasActiveFulltextIndex
- TableHasCheckCnst
- TableHasClustIndex
- TableHasDefaultCnst
- TableHasDeleteTrigger
- TableHasForeignKey
- TableHasForeignRef
- TableHasIdentity
- TableHasIndex
- TableHasInsertTrigger
- TableHasNonclustIndex
- TableHasPrimaryKey
- TableHasRowGuidCol
- TableHasTextImage
- TableHasTimestamp
- TableHasUniqueCnst
- TableHasUpdateTrigger
- TableHasVarDecimalStorageFormat
- TableInsertTrigger
- TableInsertTriggerCount
- TableIsFake
- TableIsLockedOnBulkLoad
- TableIsMemoryOptimized
- TableIsPinned
- TableTextInRowLimit
- TableUpdateTrigger
- TableUpdateTriggerCount
- UserDataAccess
- TableHasColumnSet
- カーディナリティ
- TableTemporalType
各プロパティの詳細な説明については、Microsoftのドキュメントを参照してください。
OBJECTPROPERTY()
も参照してください vs OBJECTPROPERTYEX()
これら2つの機能の違いの詳細については、こちらをご覧ください。