OBJECTPROPERTY()
を使用できます SQL Serverの関数を使用して、オブジェクトがユーザー定義テーブルであるかどうかを確認します。
これを行うには、最初の引数としてオブジェクトIDを渡し、IsUserTable
2番目の引数として。この関数は1
を返します または0
ユーザー定義のテーブルかどうかによって異なります。
1
の戻り値 であることを意味します ユーザー定義のテーブル、および0
の値 そうではないことを意味します。
例1-基本的な使用法
簡単な例を次に示します。
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1013578649, 'IsUserTable') AS [IsUserTable];
結果:
+---------------+ | IsUserTable | |---------------| | 1 | +---------------+
この場合、 WideWorldImportersDW データベースには、提供されたIDを持つオブジェクトがあり、それはユーザー定義のテーブルです。
例2–オブジェクトIDの取得
オブジェクトの名前はわかっているがIDはわかっていない場合は、OBJECT_ID()
を使用できます。 名前に基づいてIDを取得する関数。
例:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];
結果:
+---------------+ | IsUserTable | |---------------| | 1 | +---------------+
これは前の例と同じオブジェクトです。
ここでも、IDが個別に出力されます。
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];
結果:
+-------------+---------------+ | Object ID | IsUserTable | |-------------+---------------| | 1013578649 | 1 | +-------------+---------------+
例3–オブジェクトがユーザー定義テーブルではない場合
オブジェクトがユーザーテーブルでない場合は、次のようになります。
SELECT OBJECTPROPERTY(402100473, 'IsUserTable') AS [IsUserTable];
結果:
+---------------+ | IsUserTable | |---------------| | 0 | +---------------+
この場合、データベースはします そのIDのオブジェクトがありますが、オブジェクトは実際にはストアドプロシージャ(ユーザー定義テーブルではない)であるため、否定的な結果が得られます。
ここでもOBJECT_ID()
を使用しています 。
SELECT OBJECT_ID('Sequences.ReseedAllSequences') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'IsUserTable') AS [IsUserTable], OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'IsProcedure') AS [IsProcedure];
結果:
+-------------+---------------+---------------+ | Object ID | IsUserTable | IsProcedure | |-------------+---------------+---------------| | 402100473 | 0 | 1 | +-------------+---------------+---------------+
また、オブジェクトがストアドプロシージャであるかどうかを確認し、結果が正であるかどうかを確認しました。
例4–オブジェクトが存在しない
SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsUserTable') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsUserTable') AS [12345678];
結果:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
この場合、データベースにはその名前またはIDのオブジェクトが含まれていないため、結果はNULLになります。
エラーが発生した場合、またはオブジェクトを表示する権限がない場合にもNULLが発生します。