关于MySQL5存储过程的使用心得(一)概述
来源:互联网 发布:商贸公司进销存软件 编辑:程序博客网 时间:2024/04/29 02:49
关于MySQL5存储过程的使用心得(一)概述
MySQL版本5出现的存储过程意味着这个开源数据库有了真正意义上的企业特性。笔者在使用MySQL的过程中,发现关于存储过程的资料相对缺乏。相对于一些成熟的商业数据库或开源数据库如PostgreSQL等,MySQL的存储过程支持的特性较少。一方面,MySQL存储过程支持的返回数据类型较少,另一方面,存储过程中只能使用有限的控制流。
笔者开发的一个报表项目要求使用Excel对后台数据进行分析。但是,Excel的使用者缺乏编程知识。因此,笔者需要直接将数据传给前端,然后由用户用PivotalChart对数据进行透视操作。因此,笔者使用基于MySQL存储过程的方案。用户可以通过Microsoft Query直接呼叫MySQL的存储过程,查询结果可以载入到Excel的表格中。对于用户的每个查询需求,笔者都实现了相应的存储过程。这些存储过程可以携带一或多个参数。
MySQL存储过程分Function和Procedure两种,其中前者可以返回MySQL支持的数据类型,后者则可以直接改变参数(out和inout)类型。显然,这两种方式都只能返回一个标量(scalar)值,其灵活性很有限。
如果在Procedure的最后一句中使用了Select语句,其数据集将直接返回,类似一般的SQL语句。因此,笔者几乎所以实现的存储过程都使用Procedure类型,并将结果用Select返回。
但是,如何将计算结果放到表格中并用Select返回?笔者研究了若干MySQL的表格类型,发现基于Memory的表格数据可以在存储过程结束后自动销毁。因此,笔者将所有计算的中间结果全部存于基于Memory的临时表格中。当存储过程返回时,这些表格占用的内存就会被回收。
使用temporary表格的另一个好处是,表格是一个非常强大的数据结构,并且MySQL已有的SQL操作语句可以对表格中的数据进行各种操作。表格几乎可以完全替代其他编程语句中的数据结构(数组,哈希表)。从这个意义上讲,虽然MySQL的存储过程相比其他数据库实现的特性相对较少,但是,MySQL的存储过程可以实现所有我们需要的数据操作。
在笔者实现的存储过程中,大致的流程是这样的
1)声明所有要用到的变量。
2)声明所有要用到的游标。
3)声明所有要用到的temporary表格,其engine等于memory。
4)计算并将中间结果存在temporary表格中。
5)删除所有temporary表格,除了最后一个需要返回的数据所在的表格。
6)用select语句将最后一个temporary表格中的数据返回。
在(二)中笔者将用一个实例来描述整个过程。
Jack
Feb 16, 2009
- 关于MySQL5存储过程的使用心得(一)概述
- 我使用存储过程的一些心得(一)
- 一、存储过程概述
- 关于mysql存储过程的一些心得
- [NHibernate]存储过程的使用(一)
- 学习mysql5的存储过程
- SQL存储过程使用心得
- oracle 存储过程使用心得
- 关于如何规范地编写存储过程的心得
- PostgreSQL的数据存储(一)---概述
- 关于存储过程的使用一点看法
- ORACLE中存储过程的使用(一)
- 关于我以前写的MySQL5加密存储过程所对应的解密函数
- Mysql5.0 存储过程
- mysql5存储过程
- mysql5 存储过程
- mysql5.0存储过程
- Mysql5存储过程教程
- Java GUI三剑客风云争霸
- 如何优化网站结构
- 网站编程设计的一点感悟
- Hibernate的应用说明
- Java正则表达式详解
- 关于MySQL5存储过程的使用心得(一)概述
- J2EE开发之常用开源项目介绍
- 判断变量是否为空
- 文件操作
- 090217周二
- 怎样在GridView中的DropDownList选项改变的时候获取GridView中的DataKeys.Value的二种方法
- GROW THAT DBA CAREER
- session丢失问题解决
- 取反问题