Προς το περιεχόμενο

MySql Προβλημα με cursors & procedures


Προτεινόμενες αναρτήσεις

Δημοσ.
  1. μια stored procedure η οποία θα δέχεται τον αριθμό μίας πιστωτικής κάρτας και τον αριθμό του μήνα (π.χ. Αύγουστος = 8), θα υπολογίζει το 1% για κάθε συναλλαγή του πρώτου δεκαημέρου του μήνα, το 2% για κάθε συναλλαγή του δεύτερου δεκαημέρου του μήνα και το 3% για κάθε συναλλαγή των υπολοίπων ημερών και θα τυπώνει το σύνολο αυτών. Να χρησιμοποιήσετε λογικούς δρομείς. Αυτό είναι το τασκ

    CREATE PROCEDURE clulcProcedure
    (@creditCardNum INT, 
    @sMonth INT,
    @sYear INT )
    AS BEGIN
    SET NOCOUNT ON
    
    DECLARE @firstTenDays FLOAT(10)
    DECLARE @sum1 FLOAT (10)
    DECLARE myCursor1 CURSOR
    FOR SELECT (cardTransaction.chargeAmount * 0.01) FROM cardTransaction, creditCard WHERE cardTransaction.number = creditCard.number AND creditCard.number = @creditCardNum AND YEAR(transDate) = @sYear AND MONTH(transDate) = @sMonth AND DAY(transDate) <= 10 
    OPEN myCursor1 
    FETCH NEXT FROM myCursor1 INTO @firstTenDays
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @sum1 = @sum1 + @firstTenDays
    FETCH NEXT FROM myCursor1 INTO @firstTenDays
    END
    CLOSE myCursor1
    DEALLOCATE myCursor1
    
    DECLARE @secondTenDays FLOAT(10)
    DECLARE @sum2 FLOAT(10)
    DECLARE myCursor2 CURSOR 
    FOR SELECT (cardTransaction.chargeAmount * 0.02) FROM cardTransaction, creditCard WHERE cardTransaction.number = creditCard.number AND creditCard.number = @creditCardNum AND YEAR(transDate) = @sYear AND MONTH(transDate) = @sMonth AND DAY(transDate) > 10 AND DAY(transDate) <= 20
    OPEN myCursor2
    FETCH NEXT FROM myCursor2 INTO @secondTenDays
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @sum2 = @sum2 + @secondTenDays
    FETCH NEXT FROM myCursor2 INTO @secondTenDays
    END
    CLOSE myCursor2
    DEALLOCATE myCursor2
    
    DECLARE @thirdTenDays FLOAT(10)
    DECLARE @sum3 FLOAT(10)
    DECLARE myCursor3 CURSOR 
    FOR SELECT (cardTransaction.chargeAmount * 0.03) FROM cardTransaction, creditCard WHERE cardTransaction.number = creditCard.number AND creditCard.number = @creditCardNum AND YEAR(transDate) = @sYear AND MONTH(transDate) = @sMonth AND DAY(transDate) <= 30 AND DAY(transDate) > 20
    OPEN myCursor3
    FETCH NEXT FROM myCursor3 INTO @thirdTenDays
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @sum3 = @sum3 + @thirdTenDays 
    FETCH NEXT FROM myCursor3 INTO @thirdTenDays  
    END
    CLOSE myCursor3
    DECLARE @sumOfAll FLOAT(10)
    SET @sumOfAll = @sum1 + @sum2 + @sum3
    PRINT @sumOfAll 
    DEALLOCATE myCursor3
    END

    Έχω κάνει αυτό αλλά δεν έχω αποτέλεσμα καμία ιδέα;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...