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

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

    SQL Serverでは、OBJECTPROPERTY()を使用できます オブジェクトのタイプをチェックする関数。具体的には、特定のタイプかどうかを確認できます。

    たとえば、IsTable プロパティは、それがテーブルであるかどうか、IsViewを示します。 プロパティは、それがビューなどであるかどうかを示します。

    この記事では、オブジェクトがテーブル、ビュー、ストアドプロシージャ、またはテーブル値関数であるかどうかを確認するいくつかの基本的な例を示します。

    例1-テーブルを確認する

    オブジェクトがテーブルであるかどうかを確認する例を次に示します。

    USE Music; 
    SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];
    

    結果:

    +-----------+
    | IsTable   |
    |-----------|
    | 1         |
    +-----------+
    

    ここで、オブジェクト名はArtistsです。 スキーマはdboです 。

    この場合、結果は1になります。 、これは、オブジェクトが実際にテーブルであることを示します。

    例2–ビューを確認する

    オブジェクトがビューであるかどうかを確認する例を次に示します。

    USE Music; 
    SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];
    

    結果:

    +----------+
    | IsView   |
    |----------|
    | 0        |
    +----------+
    

    この場合、前の例と同じオブジェクトをチェックしているので、ビューではないことがすでにわかっています。したがって、結果は0になります。 、これはビューではないことを示します。

    別の例を次に示します。今回は、オブジェクトは実際にはビューです。

    SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];
    

    結果:

    +----------+
    | IsView   |
    |----------|
    | 1        |
    +----------+
    

    USE Music;を削除したことに注意してください 一部、私はすでにそのデータベースにいるからです。 OBJECTPROPERTY() 現在のデータベース内のスキーマスコープのオブジェクトのみをチェックします。

    例3–条件文

    概念をさらに一歩進めて、前の例をIFに組み込むことができます。 声明。そうすれば、単一のステートメントを実行して、オブジェクトのタイプを見つけることができます。

    以下は、オブジェクトタイプを出力するだけの基本的な例です。

    DECLARE @TheObject varchar(255) = 'dbo.Artists';
    IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
      PRINT 'View';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
      PRINT 'Table';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
      PRINT 'Stored Procedure';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
      PRINT 'Table-valued Function';
    ELSE
      PRINT 'Unknown. Maybe add more types to this statement.';
    

    結果:

    Table
    

    この場合、オブジェクトはテーブルです。

    同じステートメントを使用しているが、オブジェクトタイプが異なるその他の例を次に示します。

    表示

    DECLARE @TheObject varchar(255) = 'dbo.RockAlbums';
    IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
      PRINT 'View';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
      PRINT 'Table';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
      PRINT 'Stored Procedure';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
      PRINT 'Table-valued Function';
    ELSE
      PRINT 'Unknown. Maybe add more types to this statement.';
    

    結果:

    View
    

    ストアドプロシージャ

    DECLARE @TheObject varchar(255) = 'dbo.uspGetAlbumsByArtist';
    IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
      PRINT 'View';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
      PRINT 'Table';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
      PRINT 'Stored Procedure';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
      PRINT 'Table-valued Function';
    ELSE
      PRINT 'Unknown. Maybe add more types to this statement.';
    

    結果:

    Stored Procedure
    

    テーブル値関数

    DECLARE @TheObject varchar(255) = 'dbo.ufn_AlbumsByGenre1';
    IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1
      PRINT 'View';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1
      PRINT 'Table';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1
      PRINT 'Stored Procedure';
    ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1
      PRINT 'Table-valued Function';
    ELSE
      PRINT 'Unknown. Maybe add more types to this statement.';
    

    結果:

    Table-valued Function
    

    ステートメントにタイプを追加して、ステートメントをより便利にすることができます。 OBJECTPROPERTY()の引数をリストしました このページで受け入れます。ただし、これらすべてがオブジェクトタイプであるとは限りません。確認できるさまざまなプロパティがあります。

    各プロパティの完全な説明については、Microsoftのドキュメントを参照してください。


    1. MySQLテーブルからの一意性制約の削除

    2. MariaDBのWEEKDAY()とDAYOFWEEK():違いは何ですか?

    3. MariaDBでのSECOND()のしくみ

    4. ロールバックスクリプトオラクルの自動化