GKDBASE PL/SQL引擎实现关键技术研究.doc

上传人:laozhun 文档编号:3894575 上传时间:2023-03-26 格式:DOC 页数:2 大小:13.50KB
返回 下载 相关 举报
GKDBASE PL/SQL引擎实现关键技术研究.doc_第1页
第1页 / 共2页
GKDBASE PL/SQL引擎实现关键技术研究.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《GKDBASE PL/SQL引擎实现关键技术研究.doc》由会员分享,可在线阅读,更多相关《GKDBASE PL/SQL引擎实现关键技术研究.doc(2页珍藏版)》请在三一办公上搜索。

1、GKD-BASE PLSQL引擎实现关键技术研究 摘要:在数据库管理系统GKD-BASE上设计并实现了兼容Oracle PLSQL V23语言规范的PLSQL引擎,扩展了GKD-BASE过程处理功能。 GKD-BASE数据库是一个具有自主知识产权的数据库管理系统,具有兼容SQL89标准的SQL引擎,能够为用户提供一个统一、有效的数据库访问接口,实现对数据库的各种操作。但是SQL语言缺乏对算法的描述能力,难以胜任复杂的程序设计。为了融合SQL语言强大的集合数据处理能力和第三代语言(3GL)灵活的过程处理能力,主流数据库管理系统产品都已提供了对过程式SQL语言的支持,如Oracle的PLSQL1。

2、为了使GKD-BASE适应发展现状,满足管理人员和开发人员的需求,急需开发GKD-BASE自身的PLSQL引擎。本文在数据库管理系统GKD-BASE上设计并实现了兼容Oracle PLSQL V23语言规范的PLSOL引擎,扩展了GKD-BASE过程处理功能。1 GKD-BASE PLSQL引擎的体系结构GKD-BASE PLSQL引擎的基本功能是将用户用PLSQL语言编写的程序通过词法分析程序、语法分析程序进行解析,生成中间代码并解释执行。如果在分析阶段或解释执行阶段发现错误,则向用户报告错误号及相应的错误信息,以便用户排错2。根据PLSQL语言兼有过程式语句和SQL语句的特点,采取分治策略

3、,把过程语句和SQL语句分开处理。PLSQL引擎在对PLSQL源程序编译执行时,首先进行预处理,把SQL语句和过程语句分开;然后对SQL语句和过程语句分别解析,生成语法树;最后通过执行模块对中间代码进行解释执行。图1 GKD-BASE PLSQL引擎对源程序编译生成中间代码,不能直接在目标机器上执行,需要一个解释中间代码的环境,以提供对PLSQL语言中的数据类型的支持,保证PLSQL正确执行。因此GKD-BASE PLSQL引擎可分为编译器和解释器两部分,如图1。编译器接收到PLSQL语句块后进行预处理,将句子分为SQL语句和过程语句。对于SQL语句,编译器建立SQL语句节点,进行相应的变量绑

4、定和语法检查;检查无误后产生中间代码。对于过程语句,编译器对语句成分进行语法分析并建立相应的符号表,也生成中间代码。因此,可以把编译器划分为SQL语言解析、过程语言解析、符号表生成与管理、中间代码表示与管理等模块。解释器的作用是对编译器生成的中间代码进行解释执行3,与编译器对应,具有独立的SQL语句解释模块和过程语句解释模块。解释器还包括执行状态堆栈的管理、与GKD-BASESQL引擎的调用接口。异常处理模块主要实现程序运行时的错误检查和报告,并支持用户自定义异常和预定义异常的检查和处理。2 GKD-BASE PLSQL编译器实现中的一些关键问题GKD-BASE PLSQL编译器主要是对PLS

5、QL源程序进行词法分析、语法分析和语义处理4。本文借助构建词法分析器的Lex和编译程序自动产生工具Yacc5,实现了对PLSQL源程序的编译。下面分别说明符号表的设计与管理、SQL语句解析以及游标解析。21 符号表的设计与管理符号表是一个包含程序中的变量、自定义类型和函数信息的数据库。通过索引对应于库中的一条记录;每条记录对应着一个对象的信息,如变量的类型或函数的返回值等2。考虑到PLSQL语言的块结构和名字作用域,可以使用名字堆栈存放源程序中所使用的标志符的索引、名字和类型。每个项目只包括名字本身和用来表明它的类型的标志值,以及该名字在符号表中的项目索引。名字堆栈采用层次结构,是链表型的堆栈,堆栈的每一层存放了解析的语句块嵌套层内的所有名字信息,如图2。在进入或退出一个嵌套层时调用相应的压栈和弹栈操作;查找符号时,从栈顶向栈底搜索。名字堆栈实现了标志符名称与相应的符号表索引间的映射,解决了标志符的作用域问题和可见性问题,满足了对符号表管理和调用的要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号