的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之间的代码运行正常,如下所示:
你可以看到唯一的区别是在WHERE语句中,我放置了20013而不是
过程的参数r_id。剩下的就是复制粘贴。任何提示都表示赞赏!
答案 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" (在论证中是用希腊字母写的)..所以现在它已经修复了!感谢大家的时间,并投票尝试一下!