我试图创建存储过程。该过程应该采用两个参数,即发票ID和付款金额。更新该记录以将此付款添加到总计中并将付款日期记录为今天。这是我使用此代码的代码。如果看到任何其他错误,请指出它们。
USE AP;
IF OBJECT_ID ('spRecordPayment') IS NOT NULL
DROP PROC spRecordPayment;
GO
CREATE PROCEDURE spRecordPayment
@InvoiceID int,
@PaymentAmount money
AS
BEGIN
SELECT InvoiceId,InvoiceTotal
FROM Invocies
WHERE InvoiceId = @InvoiceID
IF @PaymentAmount > InvoiceTotal
DECLARE @CreditTotal MONEY;
SET @CreditTotal = @PaymentAmount - InvoiceTotal;
UPDATE Invoices
SET CreditTotal = @CreditTotal
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET PaymentDate = GETDATE()
ELSE --This is Line 21
DECLARE @CreditTotal2 MONEY;
SET @CreditTotal2 = InvoiceTotal - @PaymentAmount;
UPDATE Invoices
SET CreditTotal = @CreditTotal2
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET PaymentDate = GETDATE()
END
它给了我这个错误:
Msg 156,Level 15,State 1,Procedure spRecordPayment,Line 21 关键字' ELSE'附近的语法不正确。
答案 0 :(得分:1)
我相信您的问题是您没有任何if new_beta > beta:
块:
BEGIN...END
答案 1 :(得分:0)
我使用的答案是:
USE AP;
IF OBJECT_ID ('spRecordPayment') IS NOT NULL
DROP PROC spSumInvoices;
GO
CREATE PROC spRecordPayment
@InvoiceID int,
@PaymentAmount money
AS
BEGIN
SELECT InvoiceId,InvoiceTotal
FROM Invoices
WHERE InvoiceId = @InvoiceID
IF @PaymentAmount > (SELECT InvoiceTotal From Invoices Where InvoiceId = @InvoiceID)
Begin
DECLARE @CreditTotal MONEY;
SET @CreditTotal = @PaymentAmount - (SELECT InvoiceTotal From
Invoices Where InvoiceId = @InvoiceID);
UPDATE Invoices
SET InvoiceTotal = 0
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET PaymentTotal = @PaymentAmount
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET CreditTotal = @CreditTotal
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET PaymentDate = GETDATE()
WHERE InvoiceID = @InvoiceID;
End
ELSE
Begin
DECLARE @NewTotal MONEY;
SET @NewTotal = (SELECT InvoiceTotal From Invoices Where
InvoiceId = @InvoiceID) - @PaymentAmount;
UPDATE Invoices
SET CreditTotal = 0
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET PaymentDate = GETDATE()
WHERE InvoiceID = @InvoiceID;
UPDATE Invoices
SET InvoiceTotal = @NewTotal
WHERE InvoiceID = @InvoiceID;
End