sql >> データベース >  >> RDS >> Sqlserver

OBJECTPROPERTY()を使用して、オブジェクトがSQLServerのテーブル値関数であるかどうかを確認します。

    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が発生します。


    1. DockerコンテナへのPostgreSQLのデプロイ

    2. 3つの簡単なSQLServerパフォーマンスの勝利

    3. スクリプト内からSQLServerスクリプトのタイムアウトを設定するにはどうすればよいですか?

    4. MySQLストアドプロシージャの作成と使用-チュートリアル