我有兩個需要插入到數據庫中的ID列表。我想在這裏做的是,將這兩個列表傳遞給一個存儲過程,並試圖添加一個while循環。我試圖用用戶定義的類型來定義該數組,但不知道如何把它傳遞到插入命令將列表傳遞給存儲過程
CREATE TYPE [dbo].[Array] AS TABLE(
[Item] [NVARCHAR](MAX) NULL
);
這是SQL/PL:
ALTER PROCEDURE [dbo].[sp_create_order]
(@productIds AS Array READONLY, @priceIds AS Array READONLY)
AS
BEGIN
DECLARE @i int
DECLARE @n int
set @n = count(@productIds)
set @i = 1;
while (@i <= @n)
BEGIN
INSERT INTO order_detail(product_id,price_id)
VALUES(@productIds[i],@priceIds[i]);
set @i = @i + 1;
END
END
RETURN 0
爲什麼你會在這裏使用循環?當你定義一個表數據類型是爲了避免使用循環。你將它們作爲一個表引用,因爲它們是一張表。 – 2014-10-27 19:53:47
對我來說,你應該用兩列創建你的表類型,而不是傳遞兩個表參數。您需要一種方法將它們合併到一行中以便插入語句。 – 2014-10-27 19:55:15