【发布时间】:2017-09-04 08:54:42
【问题描述】:
我没有在谷歌上搜索这个场景:我想在(时隙)表中插入一些记录(由 WHERE 子句选择)并添加 3 列作为 User-Defined-Function 的结果(计算一个空档日期、开始和结束时间)。即使 UDF 返回不止一行,这也必须有效。
基于微软关于使用 UDF 的建议:
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(1209);
我想出了这个概念:
INSERT INTO PlanTimeSlots (........................)
SELECT
PRJ.ID as RID,
GST.SlotDate as SlotDate,
GST.SlotStart as TimeStart,
GST.SlotEnd as TimeEnd,
PRJ.WPGroupID as WPGroupID,
45 as Priority
FROM
PlanRJ as PRJ
LEFT JOIN
(SELECT
SlotDate, SlotStart, SlotEnd
FROM
dbo.GetSuitableTimeSlot(PRJ.ID, PRJ.WPGroupID,
PRJ.DateReqBy, PRJ.DurationMin)) AS GST ON GST.JID = PRJ.ID
WHERE
........;
所以我冗余地将一个 RID 传递给 UDF,它作为 GST.JID 返回,所以有一个键可以将 UDF 结果集加入到主选择中。
这样可以吗,还是有更好的解决方案?它适用于成百上千的条目,我不确定这个概念是否能很好地发挥作用。
【问题讨论】:
标签: sql sql-server stored-procedures user-defined-functions