摘要
过程化SQL语言是一种集成于数据库服务器中的高级数据库程序设计语言,专门用于各种环境下对数据库中的数据进行快速高效访问处理。过程化SQL语言在程序开发过程中存在语法错误、逻辑错误和运行错误,它需要借助调试工具快速定位程序中存在的错误,达到修正程序的目的。
通过分析国内外现有的过程化SQL语言调试工具及其采用的调试技术可知,调试的一般过程包括:建立调试环境、设置断点、控制程序运行、查看调试信息。为实现这一调试过程,达梦数据库过程化SQL语言调试系统应包含以下6个功能模块:指令模块、脚本模块、断点模块、栈帧模块、变量模块和控制模块。
指令模块实现了指令的合法性检查以及封装,利用达梦数据库系统中现有函数调用的消息机制,提高了程序开发效率。脚本模块主要功能是为断点模块、栈帧模块、变量模块和控制模块提供脚本信息,获取正在执行或即将执行的语句。断点模块实现了断点设置、断点删除和断点信息显示,通过断点可以有效地跟踪程序的运行。栈帧模块实现了栈帧上下移动和栈帧信息显示,每个栈帧都有各自对应的方法、语句块和变量,通过栈帧移动可以查看相应栈帧层次的调试信息。变量模块实现了各种数据类型变量信息的显示,变量信息的显示格式因变量数据类型而异。控制模块主要功能是控制程序运行,具体包括执行、单步执行、执行跳入、执行跳出、继续执行和强制中断6种调试指令的实现。
最后通过实验表明,基于达梦数据库系统设计与实现的过程化SQL语言调试系统完成了预期目标,有一定的错误纠正能力。
关键词:调试,指令,断点,栈帧
Abstract
PL/SQL is an advanced database programming language, and the language has been integrated into the database server, designed for variety of environments for database access, so it can be fast and efficient processing of data. In the program development of PL/SQL, there may be syntax errors, logic errors and runtime errors, it needs to quickly locate the errors and defects in the program with debugging tools, to achieve the purpose of amending program.
By analyzing the home and abroad existed PL/SQL debugging tools and their debugging technique, it show that the general steps for debugging include: building debugging environment, setting breakpoints, controlling program running, and viewing the debugging information. So the design and implementation of PL/SQL debugging on DM database should contain the following six modules: command parsing module, script module, breakpoint module, stack frame module, variable module and control module.
Command parsing module introduces the commands which are valid, and how to package these commands, using the original DM database system’s message - mechanism for function calling to improve program development efficiency. Script module chiefly provides the corresponding statements information for other modules, let user know what is executing and what is about to execute. Breakpoint module describes how to set breakpoints, delete breakpoint, and show all breakpoint information. Breakpoints can effectively track the program running. Stack frame module describes how to move up the frame, down the stack frame, and show all stack frames information. Each frame has its own corresponding stack method, statement blocks and variable information. Through moving stack frame, you can view another stack frame-level’s debugging information. Variable module can show all kinds of data types of variable, variable information format varies by data type. Control module can control the running of program, including concretely: run, single–step, step in, step out, continue and interrupt immediately six kinds of instruction to implement.
Finally, through experiments show that the design and implementation of PL/SQL debugging base on DM database is expected to complete the basic target, and there is a certain error correction ability.
Key words: Debugging, Command, Break Point, Stack Frame
目录
摘要 .................................................................................................................... I Abstract .............................................................................................................. I I 1 绪论
1.1课题背景 (1)
1.2国内外概况 (2)
1.3课题主要研究工作 (5)
2 过程化SQL语言调试系统的总体设计
2.1系统设计目标 (6)
2.2系统总体结构 (7)
sql语句实现的四种功能2.3本章小结 (14)
3 过程化SQL语言调试系统的实现
3.1调试信息结构体 (15)
3.2指令模块的实现 (17)
3.3脚本模块的实现 (19)
3.4断点模块的实现 (24)
3.5栈帧模块的实现 (26)
3.6变量模块的实现 (28)
3.7控制模块的实现 (31)
3.8本章小结 (35)
4 实验结果与分析
4.1实验平台 (36)
4.2功能实验 (36)
4.3本章小结 (43)
5 总结与展望
5.1全文总结 (44)
5.2展望 (45)
致谢 (46)
参考文献 (47)
1 绪论
1.1 课题背景
结构化查询语言(Structured Query Language,SQL)是一种非过程化的关系型数据库通用访问语言。这种语言只能对数据库进行简单的数据存储、查询、更新等操作,难以满足用户复杂的业务逻辑需求[1]。过程化SQL语言(Procedural Language/SQL,PL/SQL)的出现正是为了解决这一问题。
PL/SQL是一种对标准SQL进行扩展的过程化语言[2],它允许将SQL的数据操纵语句和查询语句包含在块结构和代码过程语句中,从而使PL/SQL语句块能够实现功能强大的事务处理。PL/SQL语句块可以被独立编译并存储在数据库中,任何与数据库相连接的应用程序都可以访问这些存储的PL/SQL语句块,它降低了应用程序的代码复杂度和错误率,同时确保了数据操作的集中管理和安全。
在现代化企业中,PL/SQL越来越多地被用来实现比较复杂的业务逻辑,但无论多么优秀的程序员都难以保证自己编写的代码中没有错误,因此程序的开发应该与调试紧密结合起来。当程序完成编译之后,它很可能无法正常运行、或者不能完成预期的功能、或者造成系统崩溃[3,4],此时如何通过调试到问题的症结所在,就成了摆在程序开发人员面前最严峻的问题。
目前国内外主流的PL/SQL调试工具都是针对Oracle扩展的过程化SQL语言研发的调试工具,Microsoft SQL Server、Sybase、DB2等数据库系统也都在SQL/PSM (Structured Query Language/Persistent Stored Modules)标准上对SQL进行了不同程度的扩展[5]。但是这些调试工具并不能兼容所有的数据库系统[6],并且可以查看的调试信息有限。针对现有PL/SQL调试工具的不足,本课题将在达梦数据库系统基础上,提出一种有效的PL/SQL调试实现机制,设计并实现一套灵活的PL/SQL调试系统。
本课题来源于达梦数据库有限公司PL/SQL研发项目的一个子项目,该子项目将在达梦数据库系统基础上实现自主研发的PL/SQL调试系统,主要功能是为PL/SQL 语句块提供调试功能,帮助程序开发人员快速定位PL/SQL语句块中存在的错误,同时提供更多可查看的调试信息,尽量满足用户的需求。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。