总览
从IBM DB2 for i V5R4版本开始,IBM i开发人员已经能够以图形方式调试SQL和Java存储过程。 许多IBM i开发人员都不知道此功能。 这些图形功能由IBM Data Studio产品(以前称为IBM DB2 Developers Workbench和IBM DB2 Development Center)提供。 IBM Data Studio是一种可视化工具,可支持所有IBM平台上的整个IBM DB2系列,以快速开发DB2业务对象。 Data Studio(4.1.0)的最新版本还添加了对DB2 i SQL用户定义函数的支持。 此新支持要求在系统上安装IBM i 6.1或IBM i 7.1 数据库组PTF的最新版本。
Data Studio概述
IBM Data Studio是基于Eclipse技术的图形开发工具。 Data Studio支持应用程序开发人员各种功能,从浏览和编辑表中的数据到创建和运行SQL语句。 该Data Studio网站提供了DB2 for i数据库支持的Data Studio功能的完整列表。
IBM i开发人员可以从Data Studio下载网站下载Data Studio。
Data Studio连接设置
正确设置连接是使用Data Studio调试功能的关键设置步骤。 以下步骤将指导您完成连接配置过程。
- 首次启动Data Studio时,需要为开发项目建立新的数据库连接。 在“数据源资源管理器”视图中添加了连接,该视图通常位于窗口的左下角。 使用图1所示的界面添加新的数据库连接。
图1.连接设置窗口
- 确定过程所在的DB2服务器的类型。 在此示例中,蓝色突出显示栏(显示在窗口的左侧)指示为i选择DB2。
- 选择窗口右中角的JDBC驱动程序。 这是重要的一步,因为如果您的目标是使用Data Studio调试器,则默认驱动程序AS / 400 Toolbox for Java不起作用。 Data Studio产品和Toolbox JDBC驱动程序可以很好地协同工作,以便为i SQL对象(例如存储过程)编辑和创建DB2,但不能用于存储过程调试。 相反,调试存储过程时,必须使用IBM Data Server Driver for JDBC和SQL(也称为DB2 JCC或DB2 Universal JDBC驱动程序)。 用于JDBC的IBM数据服务器驱动程序也是Type-4 JDBC驱动程序(工具箱JDBC驱动程序也是如此)。 相反,IBM i操作系统不包括用于JDBC驱动程序的数据服务器驱动程序,而是包含在Data Studio下载中,以及DB2 Connect许可证,该许可证允许从Data Studio访问i2服务器的DB2。
- 标识DB2 for i数据库服务器。 您需要使用服务器上的本地数据库名称设置数据库输入字段。 您可以通过运行IBM i显示数据库关系数据库条目(DSPDBRDIRE)命令并使用* LOCAL条目的名称来获取此数据库名称。 主机是被访问的IBM i服务器的TCP / IP主机名。 在此示例中,本地数据库和TCP / IP主机名相同。
存储过程设置
Data Studio调试器要求使用特殊属性创建存储过程,以使该过程有资格进行调试。 您可以使用ALLOW DEBUG MODE
子句或使用CURRENT DEBUG MODE
特殊寄存器将这些属性添加到过程中。 *SQL DBGVIEW
选项与Data Studio调试器不兼容。 实际上,如果过程同时指定了ALLOW DEBUG MODE
子句和DBGVIEW
选项,则会返回语法错误。
清单1包含一个使用ALLOW DEBUG MODE
子句SQL过程的示例。
清单1.带有ALLOW DEBUG MODE子句SQL过程
CREATE PROCEDURE myschema.ship_it(IN ordnum INTEGER, IN ordtype CHAR(1),
IN ordweight dec(3,2))
LANGUAGE SQL
ALLOW DEBUG MODE
sp: BEGIN
DECLARE ratecalc DECIMAL(5,2);
/* Check for international order */
IF ordtype='I' THEN
SET ratecalc = ordweight * 5.50;
INSERT INTO wwshipments VALUES(ordnum,ordweight,ratecalc);
ELSE
SET ratecalc = ordweight * 1.75;
INSERT INTO shipments values(ordnum,ordweight,ratecalc);
END IF;
END
如果您不想在CREATE PROCEDURE语句中包括调试子句,则CURRENT DEBUG MODE
特殊寄存器提供了另一种选择。 使用这种方法,只要在创建过程之前将特殊寄存器设置为ALLOW值,就可以从CREATE PROCEDURE语句中删除ALLOW DEBUG MODE
子句。 以下是设置调试模式特殊寄存器的示例: SET CURRENT DEBUG MODE=ALLOW
将特殊寄存器设置为ALLOW意味着在此分配之后创建的任何例程都可以由Data Studio调试器调试。 使用Data Studio创建过程时,还可以通过选择Deploy Routines界面上的Enable Debugging选项来启用调试模式, 如图2所示。
图2. Deploy Routines窗口
选中“ 启用调试”复选框会使Data Studio在选定服务器上创建存储过程之前,将调试模式特殊寄存器设置为ALLOW值。 这样可以确保即使存储过程源代码中缺少ALLOW DEBUG MODE子句,也可以在服务器上存在存储过程的调试视图。
启动调试器
启动调试器之前,您需要在左上角的Data Project Explorer窗口中找到SQL存储过程( 如图3所示)。 双击该过程将使源代码显示在右侧的“ IBM SQL和例程开发”透视图中。 该透视图使您可以编辑,创建和运行SQL过程。
如图3中突出显示的那样,启动调试器的最简单方法是在Data Project Explorer窗口中右键单击存储过程,然后单击Debug 。
图3.启动调试界面
为存储过程启动调试任务后,将显示窗口( 如图4所示),以便您可以为此例程调用指定调试设置。 可以在此接口上更改的主要设置是在存储过程的调用中将传递的输入参数的值。 “ 运行和性能选项”选项卡具有一个设置,该设置使对数据库所做的更改可以自动提交。
图4.调试例程设置窗口
如果要更改输入参数值,请在参数的“ 值”列中单击。 通过此界面,您可以从要测试的文件中检索值,这样就不必在每次需要运行和调试特定测试时手动输入这些值。
现在已完成配置,单击Debug即可启动调试器 。 单击Debug之后,Data Studio会自动切换到图5中显示的Debug透视图 。
使用调试器
当Data Studio调试器可以控制存储过程的执行时,存储过程的第一行将突出显示( 如图5所示)。 第一次在系统上运行Data Studio调试器时,调试器可能需要一些时间才能获得控制权,因为必须在IBM i系统上启动作业(QSQDBGMGR)才能支持Data Studio调试会话。
在Data Studio调试器控制了之后,您可以逐步执行该过程并设置断点。 您可以通过双击左边距来设置和清除断点。 设置断点后,左边缘会显示一个小点。 圈出图5中的断点指示器以供参考。 在“调试”视图(“调试”选项卡中突出显示)的第一行中,您可以控制存储过程的执行。 单击带有黄色条形图标的绿色箭头会使存储过程在达到断点后恢复执行。 带有黄色箭头的图标提供了各种步骤执行(例如,Step Into和Step Over)。 您可以在右上角(在“变量”选项卡中)的“变量”视图中访问过程变量的值。 因为图5显示了存储过程开始运行之前的初始调试视图,所以Variables视图仅包含两个变量,SQLCODE和SQLSTATE,它们已由DB2初始化为零。 随着存储过程执行的进行,Data Studio调试器会自动向该视图添加变量。
图5.调试透视图
变量视图的这种动态特性( 如图6所示)在SET语句上达到断点后显示Debug视图。 现在已经运行了两行存储过程,您可以看到“变量”视图显示了更多变量,包括SQL过程的输入参数(ORDNUM,ORDWEIGHT,ORDNUM)的值。 您还可以使用“变量”视图在变量上设置监视,甚至更改它们的值-您可以通过右键单击变量名称来访问这两个函数。 与IBM i图形调试器相比,使用Data Studio调试器监视和访问存储过程中的变量和参数要容易得多。
图6还展示了Data Studio调试器如何突出显示要运行的下一行代码。 您还可以推断出从左边距到达一个断点,在该处箭头指向表示定义的断点的小圆圈。
图6.可变透视图
SQL函数注意事项
使用Data Studio调试器调试SQL用户定义的标量函数几乎与调试存储过程相同。 唯一的区别是,调试器只能与用户定义的标量函数一起使用,这些函数指定了NOT FENCED和DISALLOW PARALLEL属性。 如果您SQL函数满足此要求,则只需遵循与SQL过程相同的调试步骤即可。
完成此详细介绍之后,您现在应该准备使用IBM Data Studio调试器来加快存储过程的问题确定过程。 调试愉快!
翻译自: https://www.ibm.com/developerworks/ibmi/library/i-debugger-db2-i/index.html