带脚本的MySQL脚本(错误1064)

时间:2014-12-13 06:35:41

标签: mysql mysql-error-1064

  

的MySQL> source queries.txt

     

错误1064(42000):您的SQL语法有错误;检查对应的手册   到您的MySQL服务器版本,以便在'r_id附近使用正确的语法   INT)   开始   SELECT temp.id,SUM(temp.hours *(e.salary / 140))AS成本   来自第1行的em'

所以当我编译以下脚本时,我得到了上述错误。
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 ;

如果我将r_id替换为任何int,则start和end之间的代码运行正常,如下所示:
enter image description here
你可以看到唯一的区别是在WHERE语句中,我放置了20013而不是
过程的参数r_id。剩下的就是复制粘贴。任何提示都表示赞赏!

3 个答案:

答案 0 :(得分: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 ;

在您的数据库查询引擎中运行此查询,并确保代码没有问题。然后使用外部文件存储它。

答案 1 :(得分:1)

看起来非常微小。除了下面的内容,我实际上没有看到你的程序体有任何问题。更改结束分隔符语句

END$$

END $$

答案 2 :(得分:0)

似乎代码一直都是正确的......它只是" IN" (在论证中是用希腊字母写的)..所以现在它已经修复了!感谢大家的时间,并投票尝试一下!