2014-12-13 61 views
0

的mysql>源queries.txtMySQL的腳本程序(錯誤1064)

ERROR 1064(42000):你在你的SQL語法錯誤;檢查R_ID對應 你的MySQL服務器版本使用附近的」正確的語法手冊 INT) BEGIN SELECT temp.id,SUM(temp.hours *(e.salary/140))AS成本 自EM 「在1號線

所以我得到當我編譯下面的腳本上面的錯誤..
queries.txt

DELIMITER $$ 
CREATE PROCEDURE pro1(ΙΝ r_id INT) 
BEGIN 
    SELECT temp.id,SUM(temp.hours*(e.salary/140)) AS cost 
    FROM employee e INNER JOIN (SELECT r.id,w.hours, w.afm FROM repair r INNER JOIN works w ON r.id=w.id WHERE r.id=r_id) AS temp 
    ON e.afm=temp.afm GROUP BY temp.id; 
END$$ 
DELIMITER ; 

開始和結束正在運行,如果只是罰款之間的代碼一世與任何INT取代R_ID,如下圖所示:
enter image description here
正如你看到的,唯一的區別是在WHERE語句,其中我把20013代替
過程的參數R_ID的。其餘的只是一個複製粘貼。任何提示都表示讚賞!

+0

你是否直接在數據庫引擎上試過這個查詢? 可能是你已經創建了這個程序,所以仍然存在。 – 2014-12-13 07:50:24

+0

@ usermesam0023我在我的數據庫中運行了命令「show procedure status」,它返回了一個空集......但是由於它給了我錯誤,它不能保存這個過程。 – TheDillo 2014-12-13 07:56:14

回答

0

看來,代碼始終是正確的..這只是在「IN」(在參數中寫在希臘字母)..所以現在它是固定的!感謝大家爲你的時間,並upvoted給它一個嘗試!

1

反正試試這個:

DELIMITER $$ 
    DROP PROCEDURE IF EXISTS pro1; 

    CREATE PROCEDURE pro1(ΙΝ r_id INT) 
    BEGIN 
     SELECT temp.id, SUM(temp.hours*(e.salary/140)) AS cost 
     FROM employee e 
     INNER JOIN 
      (SELECT r.id, w.hours, w.afm 
      FROM repair r 
      INNER JOIN 
       works w 
      ON r.id = w.id WHERE r.id = r_id) AS temp 
     ON e.afm = temp.afm GROUP BY temp.id; 

    END$$ 
    DELIMITER ; 

運行在你的數據庫查詢引擎此查詢,並確保有一個與代碼沒有問題。然後使用外部文件來存儲它。

+0

仍然一樣,雖然它很有趣,錯誤停在「SUM(temp.hour *(e.salary/140))AS」,而不是像之前那樣做的「FROM em」。我不知道是否這與它有關。 – TheDillo 2014-12-13 09:09:57

+0

你的SELECT查詢仍然有錯誤嗎? – 2014-12-13 17:39:12

1

它看起來像一個非常微小的。除了下面的內容,我其實並沒有看到你的程序主體存在任何問題。更改結束符聲明

END$$ 

END $$ 
+0

nah ..沒有任何區別..我開始考慮它是否與我的MySQL設置有關。但是我之前從未遇到過任何問題。 – TheDillo 2014-12-13 09:05:54