Учитывая следующую хранимую процедуру в T SQL, которая может быть передана в строке идентификаторов с разделителями-запятыми, которая дается функции, которая возвращает таблицу идентификаторов для присоединения, существует ли элегантный способ сделать это так, если переданный параметр @BomAssemIDs
имеет значение NULL, поэтому вместо выбранных записей выбирается ALL.
В качестве объединения выполняется фильтрация, но если @BomAssemIDs
равно нулю, я не хочу его использовать. , Я пытался избежать дополнительного кода или динамического кода c SQL, поэтому сейчас мое решение было бы большим оператором if, одно из которых использовало бы соединение с табличной функцией, а другое не использовало бы его. Кажется, я должен быть в состоянии express это элегантно, но я не могу gr asp это. Использование 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