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

Posted

技术标签:

【中文标题】使用自定义类型调试 pl/sql 函数【英文标题】:debugging pl/sql function with custom types 【发布时间】:2014-05-22 11:04:01 【问题描述】:

我想从这个问题的答案中使用函数 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 开发人员。我想知道出了什么问题。

【问题讨论】:

【参考方案1】:

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

代替:

:v_Return := v_Return;

设置一个虚拟值:

:v_Return := null;

您不能只将旧行注释掉,因为它会出现“无效的列索引”错误,这与它期望设置绑定变量有关 - 它不喜欢你不引用它到:v_Return

当然,您必须重新编译该函数以进行调试。完成此操作并修改生成的调试器代码后,它会按预期在断点处停止。

【讨论】:

以上是关于使用自定义类型调试 pl/sql 函数的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义类型参数创建一个过程。 PL/SQL

从 0jdbc6 JDBCthin 驱动程序调用具有自定义对象返回类型的 Oracle PL/SQL 过程

Oracle PL/SQL表记录类型

PL/SQL练习自定义异常

PL/SQL复合变量

自动类型生成