首页 > Oracle, Oracle工具 > 调试Oracle存储过程或函数的条件

调试Oracle存储过程或函数的条件

2014年1月14日 发表评论 阅读评论

做为一名开发人员,调试自己的程序在工作中很重要的一部分。首先是需要调试的权限,这个权限是:DEBUG CONNECT SESSION

如果没有这个权限,调试按钮会置灰或者报错提示缺少权限

ORA-0131: Insufficient privileges.

Note: Debugging requires the DEBUG CONNECT SESSION system privilege.

如下图:

调试错误

 

但最近在做项目时发生一件怪事,在ST环境可以调试,将脚本部署到了UAT环境后存储过程都不能调试了,并且也不报错,权限都没有问题。今天终于找到原因了,原来是oracle的这个视图导致的:user_plsql_object_settings

例如我在test用户下创建了一个测试函数:

create or replace function F_TEST(i_count number) return varchar2 is

  Result varchar2(200);

begin

  Result := 'End';

  for i in 1..i_count loop

  dbms_output.put_line(i);

  end loop;

  return(Result);

end F_TEST;

查询该视图:

22:49:43 TEST@ orcl>col plsql_debug format  a20;

22:49:59 TEST@ orcl>/

 

NAME                 PLSQL_DEBUG

-------------------- --------------------

F_TEST               TRUE

 

已选择 1 行。

 

已用时间:  00: 00: 00.00

22:50:00 TEST@ orcl>col plsql_debug format  a20;

22:50:07 TEST@ orcl>select t.name, t.plsql_debug

22:50:16   2    from all_plsql_object_settings t

22:50:16   3   where t.owner = 'TEST'

22:50:16   4     and t.type = 'FUNCTION'

22:50:16   5     and t.name = 'F_TEST';

 

NAME                 PLSQL_DEBUG

-------------------- --------------------

F_TEST               TRUE

 

已选择 1 行。

此时函数是允许调试的。

重新编译:

22:50:16 TEST@ orcl>alter function f_test compile plsql_debug=false; 

 

函数已更改。

后重新查询:

22:51:28 TEST@ orcl>select t.name, t.plsql_debug

22:52:19   2    from all_plsql_object_settings t

22:52:19   3   where t.owner = 'TEST'

22:52:19   4     and t.type = 'FUNCTION'

22:52:19   5     and t.name = 'F_TEST';

 

NAME                 PLSQL_DEBUG

-------------------- --------------------

F_TEST               FALSE

 

已选择 1 行。

再次调试发现无法进入函数内部,而不报错

后记:通常我们都是用PL/SQL做为调试工具,今天介绍下Oracle官方提供的Oracle SQL Developer如何调试:

1.打开要调试的程序,在要调试的行数上单击,设置断点,这个和MyEclipse的操作是一样的。

 调试步骤一

2.单击调试按钮

 调试步骤二

3.弹出调试窗口,注意这个存储过程需要有传入参数,程序默认将入参设置成了NULL,所以需要修改下参数。例如修改成:

NAME=’Hello’;

修改完后单击确定按钮。

 调试步骤三

4.剩下的就可以根据自己的需要进行调试了。

 调试步骤四

 

分类: Oracle, Oracle工具 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.