DM8达梦数据库存储过程调试

网友投稿 1487 2022-10-13

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

DM8达梦数据库存储过程调试

在 DM 数据库中,我们可以利用 DM PL/SQL 进行存储过程及函数的编写。有时,我们编写的程序块中可能会有 BUG 导致编译失败,这种情况下就需要用到相关工具来进行调试。本章节主要介绍两种存储过程的调试方法

使用图形化界面工具进行调试

在有图形化界面的情况下,我们可以利用管理工具来进行匿名块的调试。

调试过程

创建测试存储过程,并进行调试,如下图所示:

进入调试,依照代码逻辑进行分步调试,显示区域会显示当前变量执行结果,如下图所示:

遇到报错会终止调试,并显示报错内容,用户可根据报错内容进行代码修改,如下图所示:

使用 DMDBG 进行调试

当我们没有图形界面,或者通过远程连接服务器的时候,我们也可以利用 DM 提供的命令行调试工具 dmdbg ,来完成同样的任务。

调试过程

dmdbg 跟 disql 同级目录,都在 dmdbms/bin 目录下,登录方式同 disql 如下图所示:

使用 help 命令查看参数,如下图所示:

注意调试前确保已经开启系统包 DEBUG SYSTEM,创建完成后,我们登录到 dmdbg 中,这里直接引用刚才创建的测试存储过程,然后把 call TEST_DMDBG; 放到 SQL 内,如下所示:

DBG> sql call TEST_DMDBG;

然后我们添加断点,从头开始调试,因此会将断点放到最开始的位置,可以在需要的行数打上断点,如下所示:

DBG> B 0
Breakpoint 1 at @dbg_main, line: 1@{call TEST_DMDBG;}

接下来我们输入 r,开始 debug,如下所示:

DBG> r
Breakpoint 1, line: 1@{call TEST_DMDBG;}

输入 s,进入到循环里调试,如下所示:

DBG> s
SYSDBA.TEST_DMDBG line: 5 @{ for i in 1..3}
DBG> s
SYSDBA.TEST_DMDBG line: 7 @{ aa = 1 / (3-i);}

输入 bt,可以查看当前的堆栈,如下所示:

DBG> bt
\#0 SYSDBA.TEST_DMDBG() line: 7@{ aa = 1 / (3-i);}
\#1 @dbg_main line: 1@{call TEST_DMDBG;}

如果我们想要查看当前变量的数值,可以通过 P 变量名的方式输出打印,如下所示:

DBG> p aa
$3 = 0
DBG> s
[TEST_DMDBG] 除0错误.error code=-6103

报错停止。

上一篇:DM8达梦数据库Redo 和归档日志
下一篇:【转载】运维职业向!我是怎么入得运维行业?运维工程师入门必备技能以及打怪升级篇
相关文章

 发表评论

暂时没有评论,来抢沙发吧~