1

指定されたテーブルの指定された列のデータを取得する SQL Server スカラー値関数の下に記述しました。テーブル名とその列名を関数に渡しています。しかし、この systax によれば、関数に @table パラメーターを与えることができず、宣言するように求められます。これは、ここで使用した間違った構文が原因である可能性があります。誰でもそれを理解するのを手伝ってもらえますか?

USE [mydatabse]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER FUNCTION [dbo].[FnTDEVgroupConcat2]
    (@fieldName varchar(max),
    @table varchar(max)
    )

RETURNS varchar(max)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @result varchar(max)

     set @result = (SELECT @fieldName + ',' FROM @table FOR XML PATH(''));

    -- Return the result of the function
    RETURN @result;

END
4

2 に答える 2

2

テーブル名を変数・パラメータで指定することはできません。を使用して@table、クエリを動的に作成する必要があります。

関数内で動的 SQL を実行することはできないため、出力パラメーターを持つストアド プロシージャが必要です。

于 2012-05-04T09:45:43.523 に答える
0

SQL にはテーブル型のようなものはありません。関数で使用するものと同じ構造を持つユーザー定義テーブル タイプを作成します。INT、VARCHAR などのユーザー定義型の作成方法や、他の作成テーブル型を作成する方法を調べてから、関数で同じ型を使用できます。

于 2012-05-04T09:38:01.763 に答える