好的,所以我有这个临时表。它包含公司需要发货的所有订单。我需要以某种方式遍历表并将信息插入3+表。
@TempTable Table
(
OrderID Int
)
Declare @value int = (select count(orderID) from @temptable)
Declare @i int = 1
WHILE @i < @value BEGIN
Declare @orderid= (select first(orderid) from @temptable)
INSERT INTO shipment (orderid, Price, Date, DateDue)
VALUES (@orderid, @Price, @Date, @DateDue);
Set @i += 1
Delete top(1) from @temptable
END
有更好的方法吗?
在我的问题上添加更多内容
我从VB.Net中获取了3个值,例如@ Price,@ Date和@DateDue。因为我不能只做一个select语句导致值与此混合传递价值。
答案 0 :(得分:2)
在单个查询中执行
INSERT INTO (orderid, -some other value-)
SELECT orderid, -some other value-
FROM @temptable
答案 1 :(得分:0)
循环效率不高。总是尽量避免它。您将需要两个查询:一个用于选择和插入,一个用于删除
INSERT INTO shipment (orderid, Price, Date, DateDue)
SELECT orderid, @Price, @Date, @DateDue FROM @temptable;
DELETE FROM @temptable;
另请注意@temptable
的生命周期有限。因此 - 根据具体情况 - 可能根本不需要删除它。