我正在为 Azure 数据仓库编写一个 CREATE TABLE 脚本,它将重新创建分区表的架构。我的脚本具有查询表并从列值创建逗号分隔字符串的重复代码。我试图将这个重复的代码移动到一个单独的函数中,以便它可以被重用。
CREATE FUNCTION [dbo].[fnCreateStringFromColValues] (
@tblName [NVARCHAR](255)
, @colName [NVARCHAR](255)
, @RNumColName [NVARCHAR](255)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @nRows INT = (SELECT count(*) FROM @tblName)
DECLARE @count INT = 1
DECLARE @toReturn AS nvarchar(MAX) = ''
WHILE (@count <= @nRows)
BEGIN
DECLARE @column varchar(200) = (SELECT @colName FROM @tblName WHERE @RNumColName = @count1)
SET @toReturn = @toReturn + @column + ','
SET @count = @count + 1
END
RETURN @toReturn
END
在网上搜索后,我仍然不确定用户定义的函数是如何工作的,以及是否可以实现我想要做的事情。@tblName 可以动态传递吗?我可以在函数中查询传递的表吗?现在,我在尝试创建此函数时收到以下错误“第 16 行解析错误,第 45 列:'@tblName' 附近的语法不正确。”