数据库技术之存储过程设计与实现(二)

原创性申明

此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251353如果进行转载请注明出处。本文作者原创,邮箱[email protected],如有问题请联系作者

存储过程的生成流程图

在上一篇的文章中我们知道了由一个存储过程的语句生成一个语法树,但是这个语法树的保存在数据库系统中,这里给出一个存储过程的存储方案

可以看出存储过程的原来的sql语句是保存在一张表里面的。并且也把存储过程的语法树保存在了内存中,方便执行,不用再次编译了。

存储过程的执行流程图

在得到了语法树过后怎么执行这才是关键的。我们为了降低系统的耦合,原来系统中有的功能呢我们就不在去实现了,就利用系统自带的,存储过程是一个过程性的语言,必然有很多的计算,为了降低系统的复杂度,我么们需要把存储过程中遇到的表达式全部交有数据库引擎去执行,我们存储过程中嵌入的sql语句也交给了数据库引擎来执行。

这样的话我们就可以不用考虑sql语句的处理。降低了耦合度,也提高了逻辑难度。

我给出的这个流程图并没有包括所有的执行分支,反正具体的执行流程就是这样子的,然后其中没一个节点的处理方法也是有的

这一部分我是参照postgresql数据库的做法来做的

运行中的变量作用域

在存储过程执行的过程中有的的变量的作用范围是全局,有的范围是局部,解决这一问题的方法就是使用栈的数据结构来保存变量,这个数据结构我在上一篇文章中有给出来

这个是一篇论文中给的一副图,不过我的堆栈式用的Map来做,这样便于查找,没次查找变量的时候就从当前层找,找不到在往上一层找。这个数据结构就很好的解决了变量作用域的问题

此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251353如果进行转载请注明出处。本文作者原创,邮箱[email protected],如有问题请联系作者

时间: 2024-11-05 01:50:55

数据库技术之存储过程设计与实现(二)的相关文章

数据库技术之存储过程设计与实现(三)

原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251241如果进行转载请注明出处.本文作者原创,邮箱[email protected],如有问题请联系作者 一个java模拟的存储过程 在前两篇博客中介绍了存储过程的设计方法和数据结构.但是没有一个例子恐怕文章在好也没有很容易理解把 为此博主专门给了一个实例,我用java模拟了一个存储过程来实现,由于java下我没有进行词法语法解析,所以我的语法树就得自己来构造了

数据库技术之存储过程设计与实现(一)

语法词法解析 这一部分我在之前的博文 <使用flex和bison实现的sql引擎解析>中讲过,如何利用flex 和bison 进行词法和语法的解析,我不在多讲,这一部分可以参考一本书flex&bison中文版 这本书详细的介绍了进行词法语法解析的步骤 原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/39251241如果进行转载请注明出处.本文作者原创,邮箱[email protected],如有问题请联系作

数据库设计原则(二)

1. 原始单据与实体之间的关系  可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体. 这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.    这就是“一张原始单证对应多个实体”的典型例子. 2. 主键与

用MongoDB数据库来管理办公系统中文档型的表单和信息——通用流程化应用审批单设计思路(二,续)

1.办公系统中文档的定义 办公系统中的文档就是指对数据不敏感的业务,例如流程中的审批单.信息专栏.数据上报.信息记录等.而对于这些信息的管理,特别是时效性较强的管理记录,仍采用关系型数据库进行管理. (1)流程中审批单 流程中审批单由功能按钮区.特殊功能区.业务表单区.附件区.审批意见区等区域构成,其中,业务表单区理论上包含附件和意见,但是由于附件和意见的业务特殊性,需要单独进行管理,剩下的业务表单就可以看作文档了. 在一些流程审批业务中,业务信息有的是以Excel或word文件等方式专递,这样

《C#语言和数据库技术基础》单词必备

<C#语言和数据库技术基础> 第一章1..NET Framework   框架2.sharp            尖锐3.application      应用程序4.developer        开发者5.network          网络6.build            建造,建筑7.console          控制台8.debug            调试9.namespace        命名空间10.project         项目11.solution 

2012年数据库技术大会演讲PPT打包

 2012年数据库技术大会演讲PPT打包 DB2 Overview of Disaster Recovery Options.pdf: http://www.t00y.com/file/76767890 DB2锁问题处理最佳实践.pdf: http://www.t00y.com/file/76767892 GOS-MySQL-development.pdf: http://www.t00y.com/file/76767896 IBM Big Data Platform.pdf: http:/

用产品思维设计API(二)——数据解耦,才是前后分离的本质

用产品思维设计API(二)--数据解耦,才是前后分离的本质 前言 最近公司内部在重构项目代码,包括API方向的重构,期间遇到了很多的问题,不由得让我重新思考了下. - 一个优雅的API该如何设计? - 前后端分离之后,API真的解耦分离了吗? - 不断的版本迭代,API的兼容性该如何做? ps.这里所说的API仅为Web API,提供APP\WEB开发使用. 年前,我司内部的接口已经进入了一个完全的重构阶段,参考了市面上各大平台的API和文档,自己也总结出了很多的心得.这里向大家分享一下,接下来

对数据库技术的发展及SQL数据库的认识

一.数据库管理技术的发展 数据库技术就是研究如何科学的管理数据以便为人们提供可共享的.安全的.可靠的数据的技术.数据库技术包括数据管理和数据处理两部分内容.     人工管理阶段 20世纪50年代中期以前,计算机主要用于科学计算.在这一阶段,计算机除硬件外,没有管理数据的软件,数据处理方式是批处理.数据的组织和管理完全靠程序员手工完成,      此阶段数据的管理效率很低,其特点如下.      1. 数据不保存 此阶段计算机主要用于科学计算,并不对数据进行其他操作,一般不需要将数据长期保存,只

delphi 数据库技术沉浮录--谨给成为历史的BDE

2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年 delphi 1.0 就自带的(Borland Database Engine)数据库访问技术.从而宣告了这个持续 了20余年delphi 访问数据库技术进入历史. 纵观delphi 数据库技术的20年发展史,其实也是delphi 的发展史.通过数据库技术的 变化,也可以了解delphi的发展历史及未来的方向. 一. 话说当初 Delphi 1.0 是16 位的编译器,当时的互联网几乎是不存在,拿到的第