使用CASE语句插入临时表
问题描述:
我需要在存储过程开始时创建并填充临时表。我需要以两种方式之一填充表,具体取决于传递给存储过程的参数是否为NULL。使用CASE语句插入临时表
下面的伪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表。
答
你得八九不离十
IF @ids IS NULL
BEGIN
INSERT INTO @orders
SELECT
PO.ProductID,
PO.BrandID
FROM dbo.ProductOrders PO
END ELSE BEGIN
INSERT INTO @orders
SELECT
PO.ProductID,
PO.BrandID
FROM fnSplit(@ids, ',')
JOIN dbo.ProductOrders PO on Value = PO.ID
END
+0
+1'BEGIN .. END`不是强制性这里两个分支只有一个声明。 – 2011-02-16 03:39:07
只要改变`IF ISNULL(@ids)``到IF @ids IS NULL` – 2011-02-16 03:37:12