gpt4 book ai didi

oracle - PL/SQL - 检索输出

转载 作者:行者123 更新时间:2023-12-01 04:40:08 25 4
gpt4 key购买 nike

有没有办法连续检索 PL/SQL 的输出,而不是等到 SP 完成执行。连续意味着当它执行立即执行时。任何其他机制来检索 pl/sql 输出?

根据 Oracle 文档

Output that you create using PUT or PUT_LINE is buffered in the SGA. The output cannot be retrieved until the PL/SQL program unit from which it was buffered returns to its caller. So, for example, Enterprise Manager or SQL*Plus do not display DBMS_OUTPUT messages until the PL/SQL program completes.

最佳答案

据我所知,有一种方法,但不是 DBMS_OUTPUT.PUT_LINE技术我使用的是:

  • 创建一个日志 表,该表将接受您通常使用DBMS_OUTPUT.PUT_LINE 显示的值。我使用的列是
    • ID(一个序列,能够对数据进行排序)
    • 日期(知道什么时候发生了什么;可能不足以用于排序目的,因为需要很短时间才能完成的操作可能具有相同的时间戳)
    • 消息(VARCHAR2 列,大到足以接受全部信息)
  • 创建一个记录程序,它将向该表中插入值。它应该是一个自治事务,以便您可以在其中COMMIT(并能够从其他 session 访问数据),而不会影响主事务

这样做,你会

  • 开始您的 PL/SQL 过程
  • 在适当的时候调用日志程序(基本上,在您放置 DBMS_OUTPUT.PUT_LINE 调用的位置)
  • 在另一个 session 中,定期查询日志表,如 select * from log_table order by ID desc

此外,您可以编写一个简单的 Apex 应用程序,其中包含一个报告页面,该页面从日志记录表中选择并定期刷新(例如,每 10 秒左右)并查看主要 PL/SQL 过程的执行情况。

关于oracle - PL/SQL - 检索输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55874379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com