如果我调用特定的过程,Oracle DBMS_OUTPUT不返回任何内容

时间:2017-11-08 16:28:43

标签: oracle stored-procedures plsql

我正在运行一个看起来像这样的PL / SQL块

BEGIN
   dbms_output.put_line('11');
   schema.some_package.process_data(i);
   dbms_output.put_line('22');
END;

当我运行此块时,DBMS输出绝对没有返回任何内容。如果我注释掉process_data过程调用,那么它会按预期返回11,22。该程序不会引发任何异常,并且似乎正在正确处理。

process_data过程会调用许多其他过程和太多代码在这里分享,但是有没有人建议我应该寻找什么,这将清除所有排队的输出,甚至在程序后调用的输出在我的街区?

1 个答案:

答案 0 :(得分:2)

如果堆栈中的某些内容调用dbms_output.disable(),您所描述的行为就会发生。在您拨打dbms_output.enable()之前,这会抑制所有输出。

重新启用输出无法恢复抑制的输出,因为disable()会清除缓冲区以及禁用对put_line()get_line()等的后续调用