上海龙凤1314 shlf

推荐文档列表

GKD-BASE PL/SQL引擎实现关键技术研究

时间:2021-10-01 08:01:18 电子通信论文 我要投稿

GKD-BASE PL/SQL引擎实现关键技术研究

摘要:在数据库管理系统GKD-BASE上设计并实现了兼容Oracle PL/SQL V2.3语言规范的PL/SQL引擎,扩展了GKD-BASE过程处理功能。

    关键词:上海龙凤1314 shlf过程语言PL/SQL符号表 游标

GKD-BASE PL/SQL引擎实现关键技术研究

GKD-BASE数据库是一个具有自主知识产权的数据库管理系统,具有兼容SQL89标准的SQL引擎,能够为用户提供一个统一、有效的数据库访问接口,实现对数据库的各种操作。但是SQL语言缺乏对算法的描述能力,难以胜任复杂的程序设计。为了融合SQL语言强大的集合数据处理能力和第三代语言(3GL)灵活的过程处理能力,主流数据库管理系统产品都已提供了对过程式SQL语言的支持,如Oracle的PL/SQL[1]。为了使GKD-BASE适应发展现状,满足管理人员和开发人员的需求,急需开发GKD-BASE自身的PL/SQL引擎。

本文在数据库管理系统GKD-BASE上设计并实现了兼容Oracle PL/SQL V2.3语言规范的PL/SOL引擎,扩展了GKD-BASE过程处理功能。

1 GKD-BASE PL/SQL引擎的体系结构

GKD-BASE PL/SQL引擎的基本功能是将用户用PL/SQL语言编写的程序通过词法分析程序、语法分析程序进行解析,生成中间代码并解释执行。如果在分析阶段或解释执行阶段发现错误,则向用户报告错误号及相应的错误信息,以便用户排错[2]。根据PL/SQL语言兼有过程式语句和SQL语句的特点,采取分治策略,把过程语句和SQL语句分开处理。PL/SQL引擎在对PL/SQL源程序编译执行时,首先进行预处理,把SQL语句和过程语句分开;然后对SQL语句和过程语句分别解析,生成语法树;最后通过执行模块对中间代码进行解释执行。

图1

上海龙凤1314 shlf    GKD-BASE PL/SQL引擎对源程序编译生成中间代码,不能直接在目标机器上执行,需要一个解释中间代码的环境,以提供对PL/SQL语言中的数据类型的支持,保证PL/SQL正确执行。因此GKD-BASE PL/SQL引擎可分为编译器和解释器两部分,如图1。编译器接收到PL/SQL语句块后进行预处理,将句子分为SQL语句和过程语句。对于SQL语句,编译器建立SQL语句节点,进行相应的变量绑定和语法检查;检查无误后产生中间代码。对于过程语句,编译器对语句成分进行语法分析并建立相应的符号表,也生成中间代码。因此,可以把编译器划分为SQL语言解析、过程语言解析、符号表生成与管理、中间代码表示与管理等模块。解释器的作用是对编译器生成的中间代码进行解释执行[3],与编译器对应,具有独立的SQL语句解释模块和过程语句解释模块。解释器还包括执行状态堆栈的管理、与GKD-BASESQL引擎的调用接口。异常处理模块主要实现程序运行时的错误检查和报告,并支持用户自定义异常和预定义异常的检查和处理。

2 GKD-BASE PL/SQL编译器实现中的一些关键问题

[1] [2] [3]