我想创建一个函数,该函数返回给定查询的给定字段的连续字符串。这就是我做的。 这个给了我一个错误。 必须声明表变量“@qry”。
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
我要做的是将查询传递给此函数,并为查询的某个字段接收连续字符串。
这可能吗?
我做错了什么?
编辑:BTW我有MSSQL Server 2005;
答案 0 :(得分:3)
如果要通过任何形式的动态SQL,则需要通过EXEC或(首选)sp_ExecuteSQL执行它。如果您使用的是动态SQL,请确保您的代码不受任何注入攻击,以免您受到little Bobby Tables的愤怒:-)
答案 1 :(得分:2)
你不能做一个FROM @variable。您必须使用动态SQL并使@qry成为派生表或其他类似的东西。但是,我认为这不是最好的方法。我相信这就是你要做的事情:
请务必阅读有关XML替代解决方案的评论。