mysql 存储过程,动态拼接表名 ,新增列

qq_31146685 2017-04-22 11:20:04


drop PROCEDURE IF EXISTS addColumn;
delimiter //
CREATE PROCEDURE addColumn()
begin
declare _SQL varchar(800);
DECLARE Done INT DEFAULT 0;
DECLARE table__Name varchar(100);
DECLARE rs CURSOR for select concat('adapter_metadata_',version) aaa from adapter_scheme_version;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
OPEN rs;
REPEAT
Fetch rs Into table__Name;
set _SQL =concat('ALTER TABLE ',table__Name,' ADD COLUMN `adapter_info` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '\0\' COMMENT \'适配情况(0未适配,1疑似适配,2完全适配)\' AFTER `adapter_dict_id`') ;
set @_SQL=_SQL;
PREPARE statm from @_SQL;
EXECUTE statm;
FETCH NEXT FROM rs INTO table__Name;
UNTIL Done END REPEAT;
CLOSE rs;
END
//
delimiter ;

请问这是哪里有错?要怎么修改?



...全文
1342 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31146685 2018-06-02
  • 打赏
  • 举报
回复
引用 8 楼 c_sdn_shang_bu_qi 的回复:
为何把ddl放存储过程。。。这样会锁表
不同的表也会造成锁表吗?
c_sdn_shang_bu_qi 2017-05-09
  • 打赏
  • 举报
回复
为何把ddl放存储过程。。。这样会锁表
zjcxc 2017-05-09
  • 打赏
  • 举报
回复
循环中有两次 FETCH 游标的操作,这明显有问题
qq_31146685 2017-04-23
  • 打赏
  • 举报
回复
大神求帮忙啊
ACMAIN_CHM 2017-04-23
  • 打赏
  • 举报
回复
' ADD COLUMN `adapter_info` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT ' 注意引号的匹配。
qq_31146685 2017-04-23
  • 打赏
  • 举报
回复
为什么一直没人啊?????
qq_31146685 2017-04-23
  • 打赏
  • 举报
回复
引用 4 楼 ACMAIN_CHM 的回复:
' ADD COLUMN `adapter_info` varchar(3) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '


注意引号的匹配。



版主大人,最后一个问题,






为什么执行这个存储过程,游标执行循环的时候,有的有执行,并且执行次数不一样,有的没执行??不应该每条都执行一次吗???
qq_31146685 2017-04-22
  • 打赏
  • 举报
回复
大神都去哪了???
qq_31146685 2017-04-22
  • 打赏
  • 举报
回复
人工顶贴啊啊啊啊啊啊啊啊
qq_31146685 2017-04-22
  • 打赏
  • 举报
回复
求大神帮帮忙啊

56,683

社区成员

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

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