1

我在下面写了 SQL Server Scalar-Valued 函数来获取指定表中指定列的数据。我将表名及其列名传递给函数。但是根据这个系统税,我不能给函数@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 回答