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