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

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日

悬赏问题

  • ¥15 u盘问题:盘符不显示 无媒体
  • ¥50 R语言读取nc按月均值转为tif
  • ¥30 智能车串级pid调参
  • ¥15 visual studio code翻译老是错误
  • ¥20 卫星测高数据的高程转换
  • ¥15 爬取招聘网站数据信息
  • ¥15 安装完tensorflow,import tensorflow as tf后报错,如何解决?
  • ¥15 ultralytics库导出onnx模型,模型失去预测能力
  • ¥15 linux下点对点协议连接2个USB串口的硬件流量控制问题
  • ¥15 SQL数据自动生成问题