2017-04-02 175 views
0

我對MySQL不太熟悉,我嘗試創建一個MySQL過程,從表中選擇兩個字段,將它們分配給一個變量,然後使用這些變量的值更新另一個表中的另一個字段,到目前爲止,這是代碼我有,但是當我運行它,我得到這個錯誤:我在這個過程查詢中做錯了什麼?

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

這是我的代碼:

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

它的'設置@i:= ...' – GurV

+0

問* *另一個問題。提供樣本數據,所需結果以及存儲過程應該執行的操作的解釋。 –

回答

2

爲您語法錯誤:

label1:WHILE @i>0 
    SET @amnt 

哪裏是DO

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

非常感謝,這是我的解決方案。 – ChasingShadows

+0

你歡迎我的朋友 – Cherif

相關問題