SQL Serverでは、OBJECTPROPERTY()
を使用できます オブジェクトがストアドプロシージャであるかどうかを確認する関数。
この関数は、オブジェクトIDと、それをチェックするプロパティの2つのパラメータを受け入れます。
したがって、最初の引数としてオブジェクトIDを渡すことができ、IsProcedure
2番目として、関数は1
のいずれかを返します または0
ストアドプロシージャかどうかによって異なります。
1
の戻り値 であることを意味します ストアドプロシージャ、および0
の値 そうではないことを意味します。
例1-基本的な使用法
簡単な例を次に示します。
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(466100701, 'IsProcedure') AS [IsProcedure];
結果:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
この場合、音楽 データベースにはIDが指定されたオブジェクトがあり、実際にはストアドプロシージャです。
例2–オブジェクトIDの取得
オブジェクトの名前はわかっているがIDはわかっていない場合は、OBJECT_ID()
を使用できます。 名前に基づいてIDを取得する関数。
例:
SELECT OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
結果:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
この場合、前の例と同じオブジェクトをチェックしました。
ここでも、IDが個別に出力されます。
SELECT OBJECT_ID('Integration.GetLineageKey') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
結果:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 466100701 | 1 | +-------------+---------------+
例3–オブジェクトがストアドプロシージャではない場合
オブジェクトがストアドプロシージャでない場合は、次のようになります。
SELECT OBJECTPROPERTY(1013578649, 'IsProcedure') AS [IsProcedure];
結果:
+---------------+ | IsProcedure | |---------------| | 0 | +---------------+
この場合、データベースはします 実際にはそのIDのオブジェクトがありますが、オブジェクトは実際にはテーブルであるため、否定的な結果が得られます。
ここでもOBJECT_ID()
を使用しています 。
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsProcedure') AS [IsProcedure];
結果:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 1013578649 | 0 | +-------------+---------------+
例4–オブジェクトが存在しない
SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsProcedure') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsProcedure') AS [11111111];
結果:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
この場合、データベースにはその名前またはIDのオブジェクトは含まれていません。