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

テーブルをパラメータとしてSQLサーバーUDFに渡します

    ただし、テーブルはありません。ドキュメントから:

    Transact-SQL関数の場合、タイムスタンプデータ型を除き、CLRユーザー定義型とユーザー定義テーブル型を含むすべてのデータ型が許可されます。

    ユーザー定義のテーブルタイプを使用できます 。

    ユーザー定義のテーブルタイプの例:

    CREATE TYPE TableType 
    AS TABLE (LocationName VARCHAR(50))
    GO 
    
    DECLARE @myTable TableType
    INSERT INTO @myTable(LocationName) VALUES('aaa')
    SELECT * FROM @myTable
    

    したがって、できることは、テーブルタイプを定義することです。たとえば、TableType このタイプのパラメーターを受け取る関数を定義します。関数の例:

    CREATE FUNCTION Example( @TableName TableType READONLY)
    RETURNS VARCHAR(50)
    AS
    BEGIN
        DECLARE @name VARCHAR(50)
    
        SELECT TOP 1 @name = LocationName FROM @TableName
        RETURN @name
    END
    

    パラメータは読み取り専用である必要があります。使用例:

    DECLARE @myTable TableType
    INSERT INTO @myTable(LocationName) VALUES('aaa')
    SELECT * FROM @myTable
    
    SELECT dbo.Example(@myTable)
    

    達成したいことに応じて、このコードを変更できます。

    編集: テーブルにデータがある場合は、変数を作成できます:

    DECLARE @myTable TableType
    

    そして、テーブルから変数にデータを取得します

    INSERT INTO @myTable(field_name)
    SELECT field_name_2 FROM my_other_table
    


    1. MariaDBSkySQLの機能を理解する

    2. AzureMulti-FactorAuthenticationでAccessを使用するための7ステップガイド

    3. 最適化のしきい値–データのグループ化と集約、パート5

    4. MySQLとMongoDB1000の読み取り