这是我的功能,主要将所有行数据合并为一个字符串。我知道有一个名为Coallasce的函数可用,但是出于好奇,我想知道如何更改此函数以动态接受表名。目前,它仅从Employee表读取。
ALTER FUNCTION [dbo].[ConcatStrig] ( @TableName varchar(64), @FieldName varchar(64) ) RETURNS varchar(max) AS BEGIN Declare @Sql as varchar(max) = '' Set @Sql = 'Select ' + @FieldName + ' from ' + @TableName Declare curTemp Cursor For Select EmpName from sp_executesql(@Sql) Declare @StrTemp as varchar(max) Declare @String as varchar(max) = '' Open curTemp Fetch Next from curTemp into @StrTemp While @@Fetch_Status = 0 Begin Set @String = @String + ' ' + @StrTemp Fetch Next from curTemp into @StrTemp End Close curTemp Deallocate curTemp Return @String END
提前致谢:)
您将需要使用动态SQL。
这是参数化表名的唯一方法。