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

テーブル値関数によって返される列を検索する(T-SQLの例)

    SQL Serverでは、Transact-SQL ROUTINE_COLUMNSを使用できます。 テーブル値関数によって返される列を検索するためのシステム情報スキーマビュー。

    具体的には、現在のデータベースの現在のユーザーがアクセスできるテーブル値関数によって返される列ごとに1行を返します。

    このビューを使用するには、INFORMATION_SCHEMA.ROUTINE_COLUMNSの完全修飾名を指定します 。

    例1-基本的な使用法

    これが例です。

    SELECT 
      TABLE_CATALOG AS [Database],
      TABLE_SCHEMA AS [Schema],
      TABLE_NAME AS [Function],
      COLUMN_NAME AS [Column],
      DATA_TYPE AS [Data Type],
      CHARACTER_MAXIMUM_LENGTH AS [Char Max Length] 
    FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS;
    
    >

    結果:

    +------------+----------+-------------------+------------+-------------+-------------------+
    | Database   | Schema   | Function          | Column     | Data Type   | Char Max Length   |
    |------------+----------+-------------------+------------+-------------+-------------------|
    | Music      | dbo      | ufn_AlbumsByGenre | ArtistName | nvarchar    | 255               |
    | Music      | dbo      | ufn_AlbumsByGenre | AlbumName  | nvarchar    | 255               |
    | Music      | dbo      | ufn_AlbumsByGenre | Genre      | nvarchar    | 50                |
    +------------+----------+-------------------+------------+-------------+-------------------+
    

    これらの結果は、データベースでアクセスできるテーブル値関数が1つだけであり、3つの列を返すことを示しています。

    この例では、ビューから6列のみを返すことを選択しました。次の例は、ビューによって返されるすべての列を表示します。

    例2–ビューからすべての列を返す

    この例では、ビューが返すすべての列を含めます。また、水平方向にスクロールする必要がないように、垂直方向の出力を使用しています。また、簡潔にするために、ビューに1つの列のみに関する情報を返すように指定します(したがって、1つの行のみが返されます)。

    SELECT * 
    FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
    WHERE TABLE_NAME = 'ufn_AlbumsByGenre'
    AND COLUMN_NAME = 'ArtistName';
    

    結果(垂直出力を使用):

    TABLE_CATALOG            | Music
    TABLE_SCHEMA             | dbo
    TABLE_NAME               | ufn_AlbumsByGenre
    COLUMN_NAME              | ArtistName
    ORDINAL_POSITION         | 1
    COLUMN_DEFAULT           | NULL
    IS_NULLABLE              | NO
    DATA_TYPE                | nvarchar
    CHARACTER_MAXIMUM_LENGTH | 255
    CHARACTER_OCTET_LENGTH   | 510
    NUMERIC_PRECISION        | NULL
    NUMERIC_PRECISION_RADIX  | NULL
    NUMERIC_SCALE            | NULL
    DATETIME_PRECISION       | NULL
    CHARACTER_SET_CATALOG    | NULL
    CHARACTER_SET_SCHEMA     | NULL
    CHARACTER_SET_NAME       | UNICODE
    COLLATION_CATALOG        | NULL
    COLLATION_SCHEMA         | NULL
    COLLATION_NAME           | SQL_Latin1_General_CP1_CI_AS
    DOMAIN_CATALOG           | NULL
    DOMAIN_SCHEMA            | NULL
    DOMAIN_NAME              | NULL
    

    このビューによって返される各列については、Microsoftのドキュメントを参照してください。


    1. SQLServerリンクサーバーのクエリ例

    2. 高速ローカルストレージを求めて

    3. アイテムから追加されたデータベースエントリをボタンで削除できますか?

    4. SQLServerで同じクエリを複数回実行する最も簡単な方法