我声明了一个表值函数,以便我可以一次返回多个值。这些值是使用 DECLARE 和 Maths 和 Date 函数计算的。
该功能的结构使得它只需要一个“记录日期”,以及支持系统中问题的优先级。老实说,我认为我可以选择如下:
SELECT SupportCall.*, dbo.GetSLAStatus(SupportCall.createDate, SupportCall.priority).* FROM SupportCall
我实际上结束了:
SELECT SupportCall.*,
SLADays = (select SLADays from dbo.GetSLAStatus(SupportCall.createDate, SupportCall.priority)),
SLARecieved = (select SLAReceived from dbo.GetSLAStatus(SupportCall.createDate, SupportCall.priority)),
SLATarget = (select SLATarget from dbo.GetSLAStatus(SupportCall.createDate, SupportCall.priority)),
SLAHoursRemaining = (select SLAHoursRemaining from dbo.GetSLAStatus(SupportCall.createDate, SupportCall.priority))
From SupportCall
我看不到申请的可能加入(无论如何我都不完全理解)。
有人知道具有相同参数的函数调用是否会执行一次?如果在查询运行时我不会得到大量子查询和函数调用,那么我不在乎,如果不简洁,代码实际上是相当整洁的。
如果有大量开销,是否有人知道如何从此类表函数中选择所有列(即没有键,只是对相同输入数据进行多次计算)。
谢谢。
标记