MYSQL存储过程,清除指前缀的定表名的数据
MYSQL存储过程,清除指前缀的定表名的数据
DELIMITER $$ DROP PROCEDURE IF EXISTS `drop_table`$$ CREATE DEFINER=`root`@`%` PROCEDURE `drop_table`(IN p_db_name VARCHAR(80),IN p_table_name_prefix VARCHAR(80))
BEGIN
DECLARE var_sql_temp_table VARCHAR(200) DEFAULT NULL;
DECLARE var_sql_table_table VARCHAR(200) DEFAULT NULL; -- sql 语句
DECLARE var_delet_string VARCHAR(200) DEFAULT NULL; -- 保存获取的表名 -- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT * FROM tmp_table_result;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DROP TEMPORARY TABLE IF EXISTS tmp_table_result; -- 预处理临时表用的sql语句
SET @var_sql_temp_table = CONCAT("CREATE TEMPORARY TABLE tmp_table_result SELECT table_name FROM information_schema.TABLES WHERE table_schema= '",p_db_name,"' and table_name like '",p_table_name_prefix,"%'"); -- 预处理要执行的动态SQL
PREPARE stmt FROM @var_sql_temp_table;
-- 执行SQL语句
EXECUTE stmt;
-- 释放掉预处理段
DEALLOCATE PREPARE stmt;
-- select * from tmp_table_result; -- 查询下临时表 OPEN cur; -- 开始循环
read_loop: LOOP -- 提取游标里的数据;
-- FETCH cur INTO var_execution_amount,var_fail_type;
FETCH cur INTO var_sql_table_table ;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF; SET @var_delet_string = CONCAT('delete from ',var_sql_table_table);
PREPARE stmt FROM @var_delet_string;
-- 执行SQL语句
EXECUTE stmt;
-- 释放掉预处理段
DEALLOCATE PREPARE stmt; END LOOP;
-- 关闭游标
CLOSE cur; END$$ DELIMITER ;
MYSQL存储过程,清除指前缀的定表名的数据的更多相关文章
- #mysql查询特定数据库中的所有表名
#mysql查询特定数据库中的所有表名select table_namefrom information_schema.tableswhere table_schema='smbms' and tab ...
- mysql存储过程,获取指定数据库的某个表的字段信息
DROP PROCEDURE IF EXISTS Proc; DELIMITER //CREATE PROCEDURE Proc(database_name varchar(50),table_nam ...
- MySQL,SQLSERVER,ORACLE获取数据库表名及字段名
1.MySQL 获取表名: 用“show tables”命令.在程序中也可以采用该命令获取,在返回的RowSet中的“Tables_in_db”读出来.其中“db”是指你的数据库的名称,比如说Tabl ...
- MySQL在windows和linux下的表名大小写问题
MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再想要将数据库导出放到linux服务 器中使用时就出错了.因为在linux下表名区分大小写而 ...
- MySQL将DESC等关键字作为列名表名的处理方式
面试被问到一个问题,假如MySQL中的关键字在查询语句中作为列明或者表名出现,应该怎么处理. 例如 select desc from t; 首先创建一张表,包含两个字段,id和desc 插入了三条数据 ...
- Mysql - You can't specify target table '表名' for update in FROM clause 错误解决办法
背景 在MySQL中,写SQL语句的时候 ,可能会遇到 You can't specify target table '表名' for update in FROM clause 这样的错误 错误含义 ...
- mysql批量删除指定前缀或后缀表
今天突然发现我们数据库中多出很多表,后缀名为"copy",预计是navicat直接拷贝导致的,然后要对这些有同样后缀名的表进行删除,假设一个一个选择会非常麻烦,表计较多,在网上找了 ...
- mysql 存储过程(proceduce)查询一个表的结果插入另外一个表
公司的时间戳存证业务,对发版过程中间数据处理需要用到存储过程.对此做一个简短记录,以免遗忘. DROP procedure record_timestamp_deal ; ##创建存储过程 creat ...
- Mysql update语句赋值嵌套与在表列中数据后面增加数据
1.Mysql update语句赋值嵌套select 点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id&g ...
随机推荐
- 选课 树形dp+路径输出
#include<iostream> #include<cstdio> #include<cstring> #define maxn 2010 using name ...
- 数据库连接超时和go away、如何检测数据库的最大连接数
搜索连接bi库超时 数据库连接超时 go away go away和连接超时之间的关系是什么? 写一个例子测试一下. 如何检测数据库的最大连接数
- ViewPager Indicator的使用方法
原文:http://my.oschina.net/u/1403288/blog/208402 项目源码:https://github.com/wangjing0311/ViewPagerIndicat ...
- 关于Aspose对于Word操作的一些扩展及思考
Aspose.word Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务.Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocu ...
- nat123 与微信公众号开发者测试账号配合调试
由于公司本身是做互联网 电商行业的,微信也是一个大块,近期开始花费时间在整合,总结自己的经验,看看之前的实现是否有明显的问题. 花了点钱(8块钱)充值了nat123,进行了内网穿透.之前也有使用花生壳 ...
- Linux 挂载iso,并设置为源
ubuntu在安装lsb-core时需要从 /media/cdrom中查找源,无奈我机器的光驱被我换为硬盘了,无法安装光盘,只有在网上下载的iso文件在硬盘中,所以把iso挂载到它要查找位置 执行: ...
- VS2012和2010 设置framework版本
记录下找着麻烦http://zhidao.baidu.com/question/537279472.html VS2010和VS2012或者sv2008和VS2010,高版本VS编译都会出现,使用VS ...
- linux常用命令(5)rmdir命令
rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.)删除某目录时也必须具有对父目录的写权限.1.命令格 ...
- 简单讲解iOS应用开发中的MD5加密的相关使用
简单讲解iOS应用开发中的MD5加密的相关使用 作者:文顶顶 字体:[增加 减小] 类型:转载 时间:2015-12-19 我要评论 这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用, ...
- Core Data-备用
Core Data是一个功能强大的层,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互.Core Data将数据库行转换为OC对象(托管对象)来实现,这样无需 ...