2017-04-02 2 views
0

Ich bin nicht so vertraut mit MySQL, ich versuchte, eine MySQL-Prozedur zu erstellen, die zwei Felder aus einer Tabelle auswählt, sie einer Variablen zuweist und dann den Wert dieser Variablen verwendet, um ein anderes Feld in einer anderen Tabelle zu aktualisieren i der Code haben, aber wenn ich es laufen bekomme ich diesen Fehler:Was mache ich bei dieser Prozedurabfrage falsch?

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @amnt = (SELECT initial_payment FROM ph WHERE payment_status = 'unconf' at line 5

Dies ist mein Code:

DELIMITER // 
CREATE PROCEDURE check_for_days() 
BEGIN 
    SET @i = (SELECT COUNT(*) FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2) ; 

    label1:WHILE @i>0 
     SET @amnt = (SELECT `initial_payment` FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1); 
     SET @id_to_cred = (SELECT `to_pay_id` FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1); 
     UPDATE `gh` SET `remaining_to_get` = + @amnt WHERE `u_id` = @id_to_cred; 
     DELETE FROM `ph` WHERE `payment_status` = 'unconfirmed' && TIMESTAMPDIFF(DAY, `date_paired`, NOW()) > 2 LIMIT 1; 
     SET @i = @i - 1; 
    END WHILE label1; 
END 
DELIMITER ; 
+0

es 'ist gesetzt @i: = ...' – GurV

+0

* Fragen Sie einen anderen * Frage. Geben Sie Beispieldaten, gewünschte Ergebnisse und eine Erläuterung der geplanten Prozedur an. –

Antwort

2

Für Sie Syntaxfehler:

label1:WHILE @i>0 
    SET @amnt 

wo ist DO

label1:WHILE @i>0 DO 
     SET @amnt` 
+0

Vielen Dank, das war meine Lösung. – ChasingShadows

+0

Sie begrüßen meinen Freund – Cherif