问题描述
我创建了一个循环遍历表并将结果连接到变量中的例程。该变量稍后与 PREPARE 和 EXECUTE 一起使用以一次性插入一堆行。
BEGIN
DECLARE fetched_name VARCHAR(32);
DECLARE loop_finished TINYINT(1) UNSIGNED DEFAULT 0;
DECLARE loop_cursor CURSOR FOR SELECT name FROM first_example_table;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET loop_finished = 1;
SET @insert_entry = NULL;
OPEN loop_cursor;
looping: LOOP
FETCH loop_cursor INTO fetched_name;
IF
loop_finished = 1
THEN
LEAVE looping;
END IF;
SET @insert_list = CONCAT_WS("),(",@insert_list,fetched_name);
END LOOP;
CLOSE loop_cursor;
SET @insert_list = CONCAT("INSERT INTO second_example_temple (name) VALUES (",")");
PREPARE insert_query FROM @insert_list;
EXECUTE insert_query;
END
到目前为止,这实际上可以按预期工作。然而,问题是准备好的查询包含没有引号的值,如下所示:
INSERT INTO second_example_temple (name) VALUES (Bill),(Peter),(Tom);
MySQL 拒绝查询缺少的引号,它希望查询看起来像这样:
INSERT INTO second_example_temple (name) VALUES ("Bill"),("Peter"),("Tom");
这个问题有什么好的解决方法吗?理想情况下没有手动设置引号并且没有使用 CONCAT 或 CONCAT_WS,因为在名称旁边设置更多字段时这会变得非常复杂。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)