我在oracle数据库中有一个PL / SQL包,其中包含一个名为 FN_GET_USERINFO_ROWS 的流水线函数,如下所示:
L.Map
我正在运行以下测试脚本来测试 PL/SQL Developer 上的流水线 FN_GET_USERINFO_ROWS ( File-> New-> Test窗口)
setBounds
但它显示以下错误:
ORA-06550:第28行,第12列:PLS-00653:聚合/表函数 PL / SQL范围中不允许使用
如何使用 PL/SQL Developer 调试流水线功能?
答案 0 :(得分:11)
其中一种方法是使用FOR-SELECT-LOOP
创建一个块并在函数中放置一个断点,或者只记录每个读取行的内容(取决于调试的含义)。因此,您可以将每个PIPE ROW
执行分开并查看其结果。
然后在 PL / SQL Dev 中选择 File-> Open-> TestScript 并从打开的窗口运行块。
DECLARE
result pkg_userinfo.ty_userinfo_table;
BEGIN
-- we call pipelined functions like this
FOR rec IN (SELECT *
FROM TABLE (pkg_userinfo.fn_get_userinfo_rows(:P_USER_ID))
-- WHERE rownum < 2
-- uncomment this line and vary amount of fetched rows
)
LOOP
dbms_output.put_line('another step : ' || rec.u_id);
END LOOP;
END;
另外,我建议您在抛出NO_DATA_NEEDED
时调试变体。为此,添加限制行数的WHERE
子句。