我仔细看了你的问题,发现你忘了一个右括号。
SET @tablaCiutat = CONCAT ("SELECT ...
where id_country=(
SELECT id_country FROM world_temp_stats.country
where Name='",vPais,"' and id_city=",vID," group by year(dt)
");
我觉得你搞混了是因为
year(dt)
以右括号结束,但还需要一个括号才能关闭子查询。如下所示:
SET @tablaCiutat = CONCAT ("SELECT ...
where id_country=(
SELECT id_country FROM world_temp_stats.country
where Name='",vPais,"' and id_city=",vID," group by year(dt)
)
");
在准备好的查询中,还应该为动态值使用查询参数,而不是字符串连接。
但如果是我,我会改变很多关于这段代码的东西。为什么要用
INTO OUTFILE
,为什么要使用存储过程呢?根据我的经验,MySQL存储过程比用几乎任何客户机编程语言编写代码都要困难。我几乎从不使用MySQL存储过程。