【发布时间】:2022-12-07 23:09:28
【问题描述】:
我定义了以下标量值函数:
CREATE OR ALTER FUNCTION getName
(
@name NVARCHAR(200),
@deletedDate DATETIME2(7) = NULL,
@suffix NVARCHAR(50) = NULL
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN QUOTENAME(CONCAT(@name, IIF(@suffix IS NOT NULL, ' ' + @suffix, ''), IIF(@deletedDate IS NOT NULL, CONCAT(' (DELETED - ', FORMAT(@deletedDate, 'dd.MM.yyyy HH:mm:ss'), ')'), '')))
END
我要做的是将其结果连接到一个变量中,如下所示:
DECLARE @Columns NVARCHAR(MAX);
SELECT @Columns = COALESCE(@Columns + ',', '') + [dbo].[getName]([Name], [DeletedDate], DEFAULT)
FROM [dbo].[Items]
WHERE [ProjectId] = 1
ORDER BY [Order] DESC;
SELECT @Columns
但是 @Columns 结果只有函数的最后一个结果,如果我删除函数并进行内联计算,它会按预期工作(具有所有值)。
我不明白为什么在使用该功能时这不起作用。
【问题讨论】:
-
您使用的是哪个数据库管理系统? (以上代码是特定于产品的。)
-
我正在使用 MS-SQL(Azure SQL 数据库)
标签: sql