Мне нужно создать и заполнить временную таблицу в начале хранимой процедуры. Мне нужно заполнить таблицу одним из двух способов в зависимости от того, равен ли параметр, переданный хранимой процедуре, NULL или нет.
Я хочу сделать ниже псевдо-SQL. FnSplit - это пользовательская функция, которая разбивает строку на символ «,» и возвращает таблицу ([Value] nvarchar (4000)).
DECLARE @ids varchar(max)
DECLARE @orders TABLE
(
ProductID int,
BrandID int
)
IF ISNULL(@ids)
INSERT INTO @orders
SELECT
PO.ProductID,
PO.BrandID
FROM dbo.ProductOrders PO
ELSE
INSERT INTO @orders
SELECT
PO.ProductID,
PO.BrandID
FROM fnSplit( @ids, ',')
JOIN dbo.ProductOrders PO on Value = PO.ID
END
Как я могу достичь вышеизложенного с помощью vaid SQL? Возможно, используя оператор CASE? Обратите внимание, что основная логика хранимой процедуры следует за этим блоком и использует таблицу @orders.