create PROCEDURE calculateusedsize(in dbname varchar(128))
BEGIN
declare recordcount int(12);
declare tn varchar(128);
declare size int(12);
declare usedsize int(12);
DECLARE done INT DEFAULT 0;
DECLARE fetchtablecur CURSOR FOR SELECT qc.tablename , qc.size FROM system.columnsize qc;
declare continue handler for SQLSTATE '02000' set done = 1;
/*先删除再新建表,以后操作为insert*/
set @dropquotatableSQL= CONCAT('DROP TABLE IF EXISTS ',dbname,'.usedtable');
prepare s1 from @dropquotatableSQL;
execute s1 ;
deallocate prepare s1;
set @dropquotatableSQL=null;
set @createquotatableSQL= CONCAT('CREATE TABLE ',dbname,'.usedtable (Id int(11) NOT NULL auto_increment,
tablename varchar(128) NOT NULL ,
usedsize int(32) NOT NULL,
PRIMARY KEY (Id)
)');
prepare s1 from @createquotatableSQL;
execute s1 ;
deallocate prepare s1;
set @createquotatableSQL=null;
OPEN fetchtablecur;
REPEAT
FETCH fetchtablecur INTO tn, size;
IF NOT done THEN
#在动态sql中,将查询结果赋值给变量
set @v_sqlcounts = concat('select count(1) into @recordcount from ',dbname,'.',tn);
set @countsSelectSQL := @v_sqlcounts;
prepare s1 from @countsSelectSQL;
execute s1;
deallocate prepare s1;
set @v_sqlcounts =null;
set @countsSelectSQL =null;
set recordcount = @recordcount;
select recordcount*size into usedsize;
set @insertSQL= CONCAT('insert into ',dbname,'.usedtable(tablename,usedsize) values(\'',tn,'\',',usedsize,')');
prepare s1 from @insertSQL;
execute s1 ;
deallocate prepare s1;
set @insertSQL=null;
END IF;
UNTIL done END REPEAT;
CLOSE fetchtablecur;
END
分享到:
相关推荐
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
总结来说,"Debugger for MySQL"这样的工具是MySQL存储过程开发和维护的有力助手,它提供了断点调试、变量查看等核心功能,使得复杂存储过程的调试工作变得更加简单和高效。熟练掌握这类工具的使用,将极大地提升...
资源包中囊括了MySQL数据库中的存储过程的...该资源下所有内容都是本人的日常软件开发经验总结,对于初学者使用MySQL存储过程的程序员具有重要参考价值,问大家要10分是不过分的,用过就知道了,欢迎大家下载参考及使用
根据题目提供的信息,下面将详细介绍如何使用MySQL存储过程实现分页功能: ```sql CREATE PROCEDURE paging( IN name VARCHAR(1024), // 表名 IN fields VARCHAR(1024), // 查询字段 IN size INT, // 每页显示的...
总结来说,MySQL的分页存储过程提供了一种高效、可复用的方式来处理分页查询,减少了直接使用OFFSET可能导致的性能问题。通过创建存储过程并在应用程序中调用,我们可以更好地控制分页逻辑,提高查询速度,提升用户...
本教程提供了MySQL存储过程的基础知识,包括其定义、使用原因、结构、作用域、参数、错误处理、安全性、函数、元数据、编写技巧以及安装和配置方法。掌握这些知识对于开发者而言,将能够有效利用存储过程来提升...
本文将详细介绍MySQL存储过程与函数的相关概念、创建方法以及使用技巧。 #### 二、存储过程与函数的区别 - **存储过程**(Stored Procedure):是一系列SQL语句的集合,它可以接受输入参数并返回多个结果集和...
### PHP中调用MySQL存储过程 #### 背景与目的 在Web开发中,PHP是一种广泛使用的服务器端脚本语言,它与MySQL数据库结合得非常紧密,为开发者提供了强大的功能来处理数据。存储过程是预编译好的SQL代码块,它们...
在本篇总结文档中,我们将探讨MySQL存储过程的简单应用,包括循环结构、创建临时表、删除数据、分页查询以及动态存储过程的编写。 首先,让我们了解一下什么是存储过程。存储过程是一组为了完成特定功能的SQL语句集...
总结一下,MySQL中的存储过程是执行重复任务和复杂逻辑的强大工具。通过创建存储过程并结合循环结构,可以实现批量添加记录的功能。理解并熟练掌握这一技术,对于数据库管理和开发工作来说是非常有价值的。
综上所述,实验报告详细介绍了MySQL中存储过程的创建与调用,使用游标、异常处理及参数传递等高级特性。通过这些内容,读者能够更好地理解MySQL数据库中存储过程和函数的高级用法,提高数据库编程能力。
总结来说,Kettle批量导出MySQL存储过程涉及到的关键知识点有:Kettle的数据流设计、MySQL的存储过程、数据库元数据获取、循环控制、文件生成和命令行脚本的创建。熟练掌握这些技能,将有助于我们在数据库管理和维护...
同时,`mysql存储过程教程.pdf`很可能是一个详细的指南,涵盖了存储过程的基础概念、语法、高级特性以及实例。通过阅读这份教程,读者可以学习如何创建、修改、删除存储过程,理解如何在存储过程中使用变量、游标、...
根据提供的文档信息,本文将深入解析《MySQL 5.0 存储过程》这一主题,重点探讨存储过程的概念、特点以及在 MySQL 5.0 中的...对于想要深入了解 MySQL 数据库应用开发的人来说,掌握存储过程的使用是非常重要的一步。
总结,MySQL存储过程是数据库开发中的重要工具,它能够提升系统性能、简化代码结构并增强安全性。通过熟练掌握存储过程的创建、调用和管理,开发者可以更高效地处理复杂的数据操作任务。在实际项目中,应根据需求...