ホームページ > データベース > mysql チュートリアル > テーブルをパラメーターとして SQL Server UDF に渡すことはできますか?

テーブルをパラメーターとして SQL Server UDF に渡すことはできますか?

DDD
リリース: 2025-01-06 03:34:40
オリジナル
597 人が閲覧しました

Can I Pass Tables as Parameters to SQL Server UDFs?

テーブルをパラメータとして 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート