テーブルをパラメータとしてスケーラー UDF に渡すことは可能ですか?
はい、テーブルをパラメーターとしてスケーラー UDF に渡すことができます。ただし、すべてのテーブル タイプがサポートされているわけではありません。
テーブル タイプの制限
Microsoft のドキュメントによると、CLR ユーザー定義タイプとユーザー定義タイプを含むすべてのデータ タイプがサポートされています。テーブルタイプ。タイムスタンプデータを除くパラメータとして使用できます。 type.
ユーザー定義のテーブル タイプ
テーブルをパラメータとして渡すには、ユーザー定義のテーブル タイプを作成する必要があります。次に例を示します。
CREATE TYPE TableType AS TABLE (LocationName VARCHAR(50))
UDF の例
次の 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
注パラメータは READONLY として指定する必要があります。
例使用法
UDF を使用するには、ユーザー定義のテーブル タイプの変数を宣言し、それにデータを挿入します。
DECLARE @myTable TableType INSERT INTO @myTable(LocationName) VALUES('aaa')
その後、UDF を呼び出すことができます。
SELECT dbo.Example(@myTable)
テーブルのデータを使用する
テーブルに UDF に渡したいデータがある場合、変数を使用してデータを保存できます:
DECLARE @myTable TableType INSERT INTO @myTable(field_name) SELECT field_name_2 FROM my_other_table
その後、変数を UDF に渡すことができます:
SELECT dbo.Example(@myTable)
以上がテーブルをパラメータとして SQL Server スカラー UDF に渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。