DECLARE @PaymentTime VARCHAR (50)
DECLARE @DueDate VARCHAR (50)
DECLARE @CustomerID int
DECLARE MYCURSOR5 CURSOR
FOR SELECT distinct Payment.PaymentTime,Invoice.DueDate, Customer.CustomerID
FROM Cus_Cred_Terms INNER JOIN
Customer ON Cus_Cred_Terms.CustomerID = Customer.CustomerID INNER JOIN
Payment ON Customer.CustomerID = Payment.CustomerID INNER JOIN
Invoice ON Payment.InvoiceID = Invoice.InvoiceID
open MYCURSOR5
FETCH MYCURSOR5 INTO @PaymentTime, @DueDate, @CustomerID
WHILE @@FETCH_STATUS = 0
BEGIN
if(@PaymentTime > @DueDate)
begin
print'payment time:'
PRINT @PaymentTime
print'due date:'
PRINT @DueDate
print''
print @CustomerID
print''
update dbo.Cus_Cred_Terms
set dbo.Cus_Cred_Terms.CreditAllowed = 0
FROM Cus_Cred_Terms INNER JOIN
Customer ON Cus_Cred_Terms.CustomerID = Customer.CustomerID INNER JOIN
Payment ON Customer.CustomerID = Payment.CustomerID
where Customer.CustomerID = @CustomerID and dbo.Cus_Cred_Terms.CreditAllowed = 1
end
FETCH MYCURSOR5 INTO @PaymentTime, @DueDate, @CustomerID
END
CLOSE MYCURSOR5
各フィールドをループして、DueDate が実際の PaymentDate よりも小さいかどうかを確認し、小さい場合は、別のテーブルのフィールドを 0 (クレジットが許可されている場合は 1、クレジットが許可されていない場合は 0) に設定します。
問題は、これを行うためにカーソルを使用しないようにすることはできますか? さらに情報が必要な場合は、お問い合わせください。