wwwgzgzgz 2022-01-27 15:32 采纳率: 100%
浏览 124
已结题

mysql存储过程在循环里写用字符串拼接的sql语句

mysql存储过程用concat连接字符串做多连接几个?我在里面一个循环片段里要写一个语句给多个表插值,表名是变量所以只能用concat连接成一个sql语句,后面j也是变量,不知道为什么会报错,这个语句我提取出来能正常运行,不知道为什么用concat拼接后报错

代码片段如下:
SET j = 0;
WHILE j<num2 DO
IF j<10 THEN
SET table_name = CONCAT('t_UserLog0',j);
ELSE
SET table_name = CONCAT('t_UserLog',j);
END IF;

SET @a = CONCAT(
'CREATE TABLE ',table_name,'(
店长编号 VARCHAR(255),店长姓名 VARCHAR(255),报单中心 VARCHAR(255),报单中心姓名 VARCHAR(255),订单号 VARCHAR(255),订单状态 VARCHAR(255),存货编码 VARCHAR(255),存货名称 VARCHAR(255),数量 VARCHAR(255),收货人 VARCHAR(255),联系方式1 VARCHAR(255),联系方式2 VARCHAR(255),省 VARCHAR(255),市 VARCHAR(255),区 VARCHAR(255),详细地址 VARCHAR(255),期数 VARCHAR(255),订单类型 VARCHAR(255),发货仓 VARCHAR(255),创建时间 VARCHAR(255),支付时间 VARCHAR(255),发货时间 VARCHAR(255),商品单价 VARCHAR(255),商品金额 VARCHAR(255),运费 VARCHAR(255),快递公司 VARCHAR(255),快递单号 VARCHAR(255),发货方式 VARCHAR(255),会员备注 VARCHAR(255),发货状态 VARCHAR(255))ENGINE=Innodb default charset=utf8;'
);
PREPARE create_stmt FROM @a;
EXECUTE create_stmt;

SET @b = CONCAT(
'INSERT INTO',table_name,'SELECT * FROM test4 WHERE 报单中心=(SELECT 报单中心 FROM test5 LIMIT ',j,',1);'
);
PREPARE insert_stmt FROM @b;
EXECUTE insert_stmt;

SET j = j+1;
END WHILE;

报错信息:
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 '* FROM test4 WHERE 报单中心=(SELECT 报单中心 FROM test5 LIMIT 0,1)' at line 1

img

  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-27 16:53
    关注

    你拼的这段sql少了空格,导致关键词都连到一起去了,所以提示语法错误

    'INSERT INTO',table_name,'SELECT 
    

    建议在执行动态sql前,先打印出你拼接好的sql字符串,确认无误后再加上执行此动态sql的命令

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 1月27日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装