私は、dbから請求書を削除するためのストアドプロシージャを作成する方法を理解しようとしています。ストアドプロシージャ(請求書の削除)
3つのテーブルに影響される:
- INVOICE - InvoiceID、日付と得意先(FK)
- INVOICELINEが含まれていますが - InvoicelineID、InvoiceID(FK)、情報でarticleID(FK)、数量、価格およびディスカウント が含まれています
記事 - Articlename、Quantity、Price、Discountの記事を含みます。
これは私が欲しいものです:
- あなたは一つの引数でSPを呼び出して、請求書のライン上のアイテムの数は、その項目の数量に戻って記事のテーブルに追加され
- をInvoiceID 。請求書上の
- すべての請求書のラインが
- 削除された請求書は、以下の
削除された請求書の行を削除するためのSPである、私がこれまで持っているものです。私は、このSPをDeleteInvoiceという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
ルーピーな思考はあなたをSQLに近づけません。 SQLはセット操作に対処するように設計されています。請求書内のすべての明細を更新します。ほとんどの手続き型言語とは非常に異なるハンマーです。 – HABO