mysql 动态生成sql语句执行方法,表格重新产生排序
来源:互联网 发布:gta4优化补丁告别卡顿 编辑:程序博客网 时间:2024/05/16 12:26
begin
declare v_sql varchar(5000);
declare colname varchar(100);
DECLARE keycolname varchar(100);
DECLARE v_pksql varchar(1000);
DECLARE done INT DEFAULT 0;
DECLARE curl CURSOR FOR SELECT column_name,COLUMN_KEY FROM information_schema.COLUMNS WHERE table_name=p_tbname and TABLE_SCHEMA=p_dbname ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
set v_sql= CONCAT('update ',p_tbname,' a,(select @x:=ifnull(@x,0)+10 as rownum ,');
set v_pksql='';
OPEN curl;
my_loop:LOOP
FETCH curl INTO colname,keycolname;
IF done=1 THEN
LEAVE my_loop;
END IF;
set v_sql=concat(v_sql,colname,',');
IF (keycolname='PRI') THEN
set v_pksql=CONCAT(v_pksql,'a.',colname,'=b.',colname,' and ');
end if;
END LOOP my_loop;
CLOSE curl;
set v_sql=left(v_sql,char_length(v_sql)-1); -- 去除最后逗号
set v_sql=CONCAT(v_sql,' from ',p_tbname,' where ',p_condition,' order by ',p_fieldname,') b set a.',p_fieldname,'=b.rownum where ');
set v_pksql=left(v_pksql,char_length(v_pksql)-1); -- 去除最后逗号
set v_sql=CONCAT(v_sql,v_pksql,' a.',p_fieldname,'<>b.rownum');
select v_sql;
set @v_sql=v_sql;
set @x=0;
prepare stmt from @v_sql; -- 预处理需要执行的动态SQL,其中stmt是一个变量
EXECUTE stmt; -- 执行SQL语句
deallocate prepare stmt; -- 释放掉预处理段
-- select CONCAT(v_sql,v_pksql,' a.',fieldname,'<>b.rownum');
-- SELECT v_pksql;
end
declare v_sql varchar(5000);
declare colname varchar(100);
DECLARE keycolname varchar(100);
DECLARE v_pksql varchar(1000);
DECLARE done INT DEFAULT 0;
DECLARE curl CURSOR FOR SELECT column_name,COLUMN_KEY FROM information_schema.COLUMNS WHERE table_name=p_tbname and TABLE_SCHEMA=p_dbname ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
set v_sql= CONCAT('update ',p_tbname,' a,(select @x:=ifnull(@x,0)+10 as rownum ,');
set v_pksql='';
OPEN curl;
my_loop:LOOP
FETCH curl INTO colname,keycolname;
IF done=1 THEN
LEAVE my_loop;
END IF;
set v_sql=concat(v_sql,colname,',');
IF (keycolname='PRI') THEN
set v_pksql=CONCAT(v_pksql,'a.',colname,'=b.',colname,' and ');
end if;
END LOOP my_loop;
CLOSE curl;
set v_sql=left(v_sql,char_length(v_sql)-1); -- 去除最后逗号
set v_sql=CONCAT(v_sql,' from ',p_tbname,' where ',p_condition,' order by ',p_fieldname,') b set a.',p_fieldname,'=b.rownum where ');
set v_pksql=left(v_pksql,char_length(v_pksql)-1); -- 去除最后逗号
set v_sql=CONCAT(v_sql,v_pksql,' a.',p_fieldname,'<>b.rownum');
select v_sql;
set @v_sql=v_sql;
set @x=0;
prepare stmt from @v_sql; -- 预处理需要执行的动态SQL,其中stmt是一个变量
EXECUTE stmt; -- 执行SQL语句
deallocate prepare stmt; -- 释放掉预处理段
-- select CONCAT(v_sql,v_pksql,' a.',fieldname,'<>b.rownum');
-- SELECT v_pksql;
end
0 0
- mysql 动态生成sql语句执行方法,表格重新产生排序
- 执行动态生成的SQL语句的方法
- mysql执行动态sql语句
- 动态生成并执行SQL语句
- mysql存储过程执行动态sql语句
- MySQL 动态sql语句执行 用时间做表名
- 动态执行sql语句
- 动态执行SQL语句
- 动态执行SQL语句
- Kettle Sql Server插入语句和执行语句生成方法
- excel表格生成sql语句
- 动态生成sql语句
- 动态生成SQL语句
- mysql 存储过程 根据参数 动态执行sql语句
- mysql存储过程执行动态sql语句并返回值
- MySQL 存储过程中执行动态 SQL 语句
- 利用oracle的with语句和动态sql,自动产生用交叉表格式显示的汇总语句
- mysql 动态执行sql
- Hibernate中多表联合查询遇到的问题(原生态的SQL语句解决办法)
- nios 中出现undefined reference to `__alt_invalid'alt_sys_init.c CC++ Problem的解决方法
- GO语言构建高并发分布式系统实践
- 代码中获取控件的宽高度,代码中设置控件的Margin
- ROS节点与运行
- mysql 动态生成sql语句执行方法,表格重新产生排序
- 适配器模式
- Unity Gameplay工具集(Unity Gameplay Tool Set)
- mvc配置加载类
- 有关windows RASDIAL
- centOS 安装 pip
- 基于qq.maps.com的web地图定位导航
- N皇后
- 解决上传大文件失败的问题