我有两个需要插入到数据库中的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