【发布时间】:2020-08-07 11:00:58
【问题描述】:
鉴于 TSQL 中的以下存储过程可以以逗号分隔的 ID 字符串形式传递,该字符串提供给返回用于连接的 ID 表的函数,如果传入参数 @BomAssemIDs 为 NULL,因此不会选择任何记录,而是选择 ALL。
作为一个连接它正在过滤,但如果@BomAssemIDs 为空,我不想使用它。我试图避免额外的代码或动态 SQL,所以现在我的解决方案将是一个大的 if 语句,一个使用表函数 join,另一个不使用它。似乎我应该能够优雅地表达这一点,但我无法掌握它。使用 SQLServer 2012
ALTER PROCEDURE dbo.[up_BomAssem_by_BomAssemIDs]
@JobID int ,
@BomAssemIDs varchar(2000)
AS
BEGIN
SELECT ba.*
FROM BomAssem ba
JOIN dbo.uf_SplitIntIDsToTable(@BomAssemIDs) sl ON ba.BomAssemID = sl.RecID
where ba.JobID = @JobID
END
【问题讨论】:
标签: sql sql-server join conditional-statements csv