mysql中存储过程中PREPARE语句的问题

nightgoblin 2016-04-11 04:45:32
我在存储过程中利用了PREPARE语句,但是在CALL这个时候报错,请高手们看看是那个地方有问题,创建过程的时候没报错。
具体代码:

-- 原本是这样的查询语句
SELECT t1.bankprovincecode,t1.bankprovincename,'2' AS area_level,COUNT(t3.corpid)AS c_corpid
FROM bankbranchparams AS t1
INNER JOIN corpinfo AS t3 ON t1.bankbranchleadercode=t3.bankbranchleadercode
WHERE t3.applydate <= '20160325' AND t3.version<>'entjxcstd'
GROUP BY t1.bankprovincecode,t1.bankprovincename;
-- 创建过程
DROP PROCEDURE IF EXISTS proc_test;
CREATE PROCEDURE proc_test
(v_cname VARCHAR(20),
v_cname2 VARCHAR(20),
v_nextlevel VARCHAR(10),
i_date VARCHAR(20))
BEGIN
SET @sqlstr1=CONCAT('SELECT t1.',v_cname,'t1.',v_cname2,v_nextlevel,
'AS area_level,COUNT(t3.corpid)AS c_corpid FROM bankbranchparams AS t1
INNER JOIN corpinfo AS t3 ON t1.bankbranchleadercode=t3.bankbranchleadercode
WHERE t3.applydate <=',i_date, 'AND t3.version<>','entjxcstd',
'GROUP BY t1.',v_cname,'t1.',v_cname2);

PREPARE stmt1 FROM @sqlstr1;
EXECUTE stmt1;

END;
CALL proc_test('bankprovincecode','bankprovincecodename','2','20160325');


报错:
[SQL]CALL proc_test('bankprovincecode','bankprovincecodename','2','20160325');
[Err] 1064 - 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 't3.version<>entjxcstdGROUP BY t1.bankprovincecodet1.bankprovincecodename' at line 3
...全文
282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightgoblin 2016-04-12
  • 打赏
  • 举报
回复
感谢各位的解答,我找到原因了。
ACMAIN_CHM 2016-04-11
  • 打赏
  • 举报
回复
entjxcstdGROUP 中间少了空格。
知道就是你 2016-04-11
  • 打赏
  • 举报
回复
benluobo 2016-04-11
  • 打赏
  • 举报
回复
是SQL的语法问题 在 prepare 前面 加入 select @sqlstr1 执行 打印的语句
benluobo 2016-04-11
  • 打赏
  • 举报
回复
'GROUP BY t1.',v_cname,'t1.',v_cname2); 少个逗号 改成 t1前面多一个逗号 'GROUP BY t1.',v_cname,',t1.',v_cname2);

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧