2009-07-24 83 views
0

我想创建一个函数,该函数返回给定查询的给定字段的concatinated字符串。这是我做的。 这个给我一个错误。 必须声明表变量“@qry”。来自多行的SQL Concat字段

CREATE FUNCTION dbo.testing 
    ( 
    @qry varchar(1000), 
    @fld varchar(100), 
    @separator varchar(15) = '; ' 
    ) 
RETURNS varchar 
AS 
    BEGIN 
    DECLARE @rslt varchar(1000) 
    SET @rslt ='' 

    SELECT @rslt = @rslt + @separator + CAST(@fld as varchar(160)) FROM @qry 

    RETURN @rslt 
    END 

我所试图做的是通过一个查询,这一功能和接收查询的某些领域的串连字符串。

这可能吗?

我在做什么错?

编辑:顺便说一句我有MSSQL Server 2005;

+2

这样做:** Set @ rslt = NULL; SELECT ISNULL(@ rslt + @ separator,'')+ ... **所以你不会在@rslt – 2009-07-24 21:32:23

回答

3

如果您想要通过任何形式的动态SQL,您需要通过EXEC或(首选)sp_ExecuteSQL执行它。如果你使用动态SQL,确保你的代码不受任何注入攻击,以免你遭受到little Bobby Tables的愤怒:-)

+0

+的开始处得到@separator,这要感谢我提醒注意关于注入攻击。 – THEn 2009-07-24 21:21:53