我们可以用PL/SQL Developer工具来调试复杂的Oracle存储过程
为便于演示,我们定义了test,test1存储过程,如下所示
create or replace procedure test as
V_test number;
begin
V_test := 1;
dbms_output.put_line(v_test);
test1();
dbms_output.put_line('this is test');
end test;
create or replace procedure test1 is
v_test varchar2(100);
begin
v_test := '测试';
dbms_output.put_line(v_test);
end test1;
存储过程中我们定义了多个 dbms_output.put_line() 用以输出信息,显示调试内容。另外,我们定义了函数内部调用,在test 函数中调用了test1 函数,由于Oracle 对大小写不敏感,在PL/SQL Developer工具 中,这两个函数名称均为大写显示
开始调试
在存储过程test名称位置,点击“右键”选择“Test”
在打开的测试窗口中按F9或点击“Start debugger” 按钮
点击“Start debugger”按钮后,出现如下界面
其中,有多个按钮,可根据情况分别使用
1, 指直接运行,当设置 断点时运行到断点时停止,否则运行到结束
2,指单步执行,执行每步语句,当语句为自定义存储过程时,可进入该存储过程。
3,指单步执行,执行每步语句,当语句为自定义存储过程时,直接获取执行结果,准备执行下一步语句。
4,指执行函数体内剩余语句并跳出目前函数,准备执行函数体外下一步语句
5,执行函数语句到光标处。
6,执行语句到异常处,如无异常执行到函数结束。
7,指在debug 的session 中执行相关sql语句,该方法对于物理表意义不大,只有存储过程中涉及oracle临时表的变更操作时,需要查看中间结果可通过点击该按钮,在弹出窗口中输入相关查询语句获取临时表信息。
查看过程变量值
可通过设置变量值,单步执行后,如下图所示
或通过查看在存储过程中添加dbms_output.put_line() ,在DBMS Output 对话框中查看输出结果