存储过程中的多个插入

时间:2011-12-15 17:32:07

标签: sql-server stored-procedures

我在表产品和表顺序之间有很多关系,链接表是ProductInOrder。 我想创建一个带有产品ID列表作为输入的存储过程,它要做的是创建一个新订单并在每个产品的链接表中添加一条新记录。

我现在使用客户端启动的事务,然后调用sp来创建新订单,然后在客户端中调用sp来创建链接表中的每个记录。 但是必须有一种方法可以在sql中执行此操作。

有什么想法吗?

最佳

2 个答案:

答案 0 :(得分:1)

你想要的是这样的东西(对于MSSQL,至少):

declare @Sql varchar(max) = '
insert into ProductInOrder (OrderID, ProductID)
select
    ' + @OrderID + ',
    ProductID
from
    Product
where
    ProductID in (' + @Products + ')'

sp_executesql(@Sql)

以逗号分隔的整数字符串传递@Products,例如.- '1,2,3,15,100'

要在C#中加载临时表,您可以执行此操作(使用名为SqlCommand的{​​{1}}:

comm

答案 1 :(得分:0)

这是另一个选项,可以很好地执行并缩短从您的应用程序到服务器的往返次数。

http://msdn.microsoft.com/en-us/library/bb510489.aspx

在我使用过的场景中表现非常出色。非常出色的选择。网上有一些例子可以查看,因为我无法找到我为其实施的概念验证。它确实需要在您要定位的数据库上创建表数据类型。