我有 2 张桌子:
- 订单(带有身份订单 ID 字段)
- OrderItems(带有外键来指示订单 ID)
在存储过程中,我有一个需要复制的订单列表。有没有一种在没有游标的存储过程中执行此操作的好方法?
编辑:
这是在 SQL Server 2008 上。
该表的示例规范可能是:
CREATE TABLE Order (
OrderID INT IDENTITY(1,1),
CustomerName VARCHAR(100),
CONSTRAINT PK_Order PRIMARY KEY (OrderID)
)
CREATE TABLE OrderItem (
OrderID INT,
LineNumber INT,
Price money,
Notes VARCHAR(100),
CONSTRAINT PK_OrderItem PRIMARY KEY (OrderID, LineNumber),
CONSTRAINT FK_OrderItem_Order FOREIGN KEY (OrderID) REFERENCES Order(OrderID)
)
存储的过程传递了一个“fred”的customerName,因此它试图克隆CustomerName =“fred”的所有订单。
举一个更具体的例子:
Fred 恰好有 2 个订单:
- 订单 1 的行号为 1,2,3
- 订单 2 的行号为 1、2、4、6。
如果表中的下一个身份是 123,那么我想创建:
- 使用第 1、2、3 行订购 123
- 使用第 1、2、4、6 行订购 124