使用自定义类型调试pl / sql函数

时间:2014-05-22 11:04:02

标签: sql oracle debugging plsql oracle-sqldeveloper

我想从回答这个问题时使用函数tq84_select_star_from_table EXECUTE IMMEDIATE in plsql

我创建了tq84_varchar2_tab,tq84_varchar2_tab_tab类型,当我在问题的答案中使用函数时,它可以工作,但是当我尝试调试函数时,我得到了这个错误并且调试没有启动。

ORA-06550: Row 13, column 16:

PLS-00382: expression is of wrong type

ORA-06550: Row 13, column  3:

PL/SQL: Statement ignored

当我更改resultSet的类型并将函数类型返回到VARCHAR2时,调试将成功启动。 我正在使用oracle sql developer。我想知道出了什么问题。 enter image description here

1 个答案:

答案 0 :(得分:1)

这看起来像一个错误,或者至少无法将自定义类型作为绑定变量处理。作为一种变通方法,您可以更改生成的代码以跳过绑定变量的赋值:

而不是:

:v_Return := v_Return;

设置虚拟值:

:v_Return := null;

enter image description here

你不能只是将旧行注释掉,因为它会得到一个'无效的列索引'错误,这与它预期绑定变量被设置有关 - 它不喜欢它你没有引用到:v_Return

当然,你必须重新编译调试功能。完成此操作并修改生成的调试器代码后,它会按预期在断点处停止。