Oracle SQL Developer 抛出 ORU-10027:运行具有大量 dbms.PUT_LINE 的存储过程时缓冲区溢出

问题描述 投票:0回答:1
我收到此错误

ORU-10027:缓冲区溢出,限制为 20000 字节

当我运行带有大量打印输出的批量测试存储过程时。

我尝试过

"set serveroutput on size unlimited"

,但每当运行存储过程时,右键单击特定包,然后“运行”存储过程。它仍然会打印到日志窗口。

然后我在网上搜索并尝试使用 DBMS 输出,并将缓冲区大小设置为一个巨大的数字,然后单击“+”以添加针对同一数据库的连接。但是当我运行存储过程时,它仍然打印到新的日志窗口。

任何建议和解决方案将不胜感激。

sql oracle oracle11g oracle-sqldeveloper plsqldeveloper
1个回答
3
投票
一般来说,这样的选择并不是最好的选择。当存储过程完成其工作时,DBMS_OUTPUT 的结果在

end可见。当它工作时你不会看到任何东西,所以如果你的目的是通过查看打印的消息来“跟踪”执行情况 - 不,这是行不通的。

此外,即使您设法将那么多

文本放到屏幕上,它迟早会丢失,并且您必须重新运行该过程(如果可能的话)来查看丢失的消息。

因此,如何采用不同的方法:不将消息打印到屏幕上,而是使用单独的(自主事务)过程将它们记录到表中。这样做,您将能够在不影响主事务的情况下提交插入,并且只需从日志表中选择行,准确地知道何时发生了什么、每个步骤花费了多少以及您可能想要记录的其他内容。

© www.soinside.com 2019 - 2024. All rights reserved.