テーブルをパラメータとして SQL Server UDF に渡す
SQL Server では、テーブルをパラメータとしてスカラー ユーザー定義関数に渡すことができます(UDF)。ただし、この機能はすべてのテーブル タイプに限定されるわけではありません。
許可されるテーブル タイプ
Microsoft のドキュメントによると、UDF パラメータでは、タイムスタンプのデータ型。したがって、ユーザー定義のテーブル タイプをパラメータとして使用できます。
ユーザー定義のテーブル タイプの作成
説明のために、次のテーブル タイプを考えてみましょう:
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50)) GO
UDF の例
さて、 TableType 型のパラメータを受け入れる UDF を定義しましょう:
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
Usage
使用例:
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa') SELECT * FROM @myTable SELECT dbo.Example(@myTable)
単一列へのオプションの制限テーブル
パラメーターを 1 つの列を持つテーブルに制限したい場合は、UDF 定義を変更して次のチェックを含めることができます:
CREATE FUNCTION Example( @TableName TableType READONLY) RETURNS VARCHAR(50) AS BEGIN IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND TABLE_SCHEMA = 'dbo') > 1 RETURN ERROR(1, 1, 'Invalid parameter: table must have a single column.'); DECLARE @name VARCHAR(50) SELECT TOP 1 @name = LocationName FROM @TableName RETURN @name END
変数の入力既存のテーブルから
既存のテーブルから UDF パラメータにデータを渡すには、次を使用できます。変数:
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
以上がテーブルをパラメーターとして SQL Server UDF に渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。