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

SQL ServerでOBJECTPROPERTY()を使用して、オブジェクトがストアドプロシージャであるかどうかを確認します

    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のオブジェクトは含まれていません。


    1. PostgreSQL列挙型とJava列挙型の間のHibernateマッピング

    2. SQLServerトランザクションログの基本

    3. oracle plsql varchar2変数にサイズが必要なのに、パラメータには必要ないのはなぜですか。

    4. mysqlトランザクション-例外があればロールバックします