pl sql developer中如何调试存储过程以及调试包中创建的存储过程

时间:2024-04-06 19:22:05

学会使用PL/SQL Developer的调试功能,对于编写复杂的存储过程,包,funtion...非常有帮助,所以今晚学习了一下:

(1)在body里设置断点(在要设置断点的行开始点击鼠标左键就可以)。

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

(2)右键点击TEST.

 

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

会出现如下TEST WINDOWS窗口

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

在下面红圈中的位置value栏中输入参数值,因为varstr是输入参数,所在要输入一个值,但是io_cursor是输入输出参数,在此做为输出参数不预输入值

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

(3) Debug-->Start.

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

如果上面操作步骤中在debug——start不能点击是灰色的,则是因为未给此用户分配调的权限,

如果点击执行的话则pl/sql developer 调试存储过程报错

note:debugging requires the debug connect session system privilege.

原因是用户权限不够,使用以下命令授予权限:

用sysdba角色的用户名登录,使用如下命令

GRANT debug any procedure, debug connect session TO username

 

(4)点击红色框的按钮进行单步调试,自动会跳到存储过程体内。

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

(5)把鼠标放到变量上可以显示出该变量的值,。

pl sql developer中如何调试存储过程以及调试包中创建的存储过程
也可以在变量外点击鼠标右链选择Add variable to Watches

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

此时会在下图红圈中列出该变量的值

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

点南上图红色粗线中的按钮,弹出如下对话框显示该变量值的详细信息

pl sql developer中如何调试存储过程以及调试包中创建的存储过程

下面是创建一个简单存储过程的例子

CREATE OR REPLACE PACKAGE u_pg_test   as
       TYPE t_cursor IS REF CURSOR ;
       Procedure u_sp_test(varStr varchar2, io_cursor IN OUT t_cursor);
END;

 

CREATE OR REPLACE PACKAGE BODY u_pg_test AS

Procedure u_sp_test(varStr varchar2, io_cursor IN OUT t_cursor) IS

    v_cursor t_cursor;
    varSql varchar2(666);

BEGIN
varSql:='Select * aa where ANAME='''||varStr||'''';

    OPEN v_cursor FOR varSql;

io_cursor := v_cursor;

END u_sp_test;

END u_pg_test;