我试图找出一种方法来创建一个从数据库中删除发票的存储过程。存储过程(删除发票)
三表会受到影响:
- 发票 - 包含InvoiceID,日期和客户ID(FK)
- INVOICELINE - 包含InvoicelineID,InvoiceID(FK),条款ArticleID(FK),数量,价格和折扣
文章 - 包含文章名称,数量,价格和折扣的文章。
这就是我想要的:
- 你叫一个参数的SP,InvoiceID
- 对发票行项目的数量增加回款表,该项目的数量。
- 所有发票上的发票行被删除
- 发票被删除
下面是我到目前为止,这是一个要删除发票行一个SP。我想从称为DeleteInvoice的SP调用此SP。问题是,我无法弄清楚SP应该如何设计才能完成这项工作,例如,如何循环通过发票上的发票行?如果有人能在这里帮忙,会很高兴。
删除发票行的SP(应该从被删除发票中的SP被调用,次数,因为有发票行):
@InvoiceID int
AS
BEGIN
DECLARE @Articleid int, @Quantity int
SELECT @Articleid = ArticleID, @Quantity=Quantity
FROM InvoiceLine
WHERE [email protected]
BEGIN TRY
BEGIN TRAN
UPDATE Article SET [email protected]
WHERE [email protected];
DELETE FROM InvoiceLine
WHERE [email protected];
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
RAISERROR ('Couldn't delete the invoice line!',16,1)
END CATCH
END
Loopy思考不会让您在SQL中走得太远。 SQL旨在处理集合操作,例如更新发票中的所有订单项。这与大多数程序语言是截然不同的。 – HABO 2012-02-18 15:07:15