SQL Server 2019中的标量UDF内联问题

时间:2019-03-06 15:08:35

标签: sql-server tsql user-defined-functions sql-server-2019

当我第一次运行以下功能时,以下错误将失败:

  

8124(在包含外部引用的聚合表达式中指定了多列。)

第二次运行它会正常运行。

如果我删除fit(..., strata=['dummy']),没问题。

*DATEDIFF(D, e.FRADATO , @til)

此功能可以在SQL Server 2008 R2和SQL Server 2016中正常使用。

1 个答案:

答案 0 :(得分:3)

SQL Server 2019仍处于CTP中,这是一项新功能。如果发现错误,则应将其报告给Microsoft,以便在发布(done for you here)之前将其修复。

在以前的版本中,如果尝试手动内联它,则会看到相同的错误(如下面的缩减示例所示)。这是由于discussed here的局限性。

WITH T(m_id,fra, til) AS
(
SELECT 1, GETDATE(), GETDATE()
)
SELECT *
FROM T
CROSS APPLY
        (SELECT     
             SUM(DATEDIFF(D, e.FRADATO, til))
         FROM 
             dbo.mlr_eos_avl e 
) CA(result)

在此内联大小写被Microsoft修复之前,您可以使用

WITH INLINE = OFF
标量UDF定义中的

禁用UDF的内联