oracle - 执行 Oracle 过程时向用户显示注释

是否可以在执行包中的过程时向用户显示注释。我的包裹有 3 个程序。我一个接一个地打电话。我想在控制台上显示 comments 就像过程 xyz 正在执行,过程已成功执行。我在过程中添加了评论,例如 DBMS_OUTPUT.PUT_LINE('PROCEDURE EXECUTED SUCCESSFULLY') 但对我没有用。 仅供引用,我在 windows 7 系统中使用 oracle 11g。

最佳答案

您不能使用 DBMS_OUTPUT 在过程运行时显示有关过程的信息。这是因为 DBMS_OUTPUT.put_line不在屏幕上显示数据,而是将数据放入队列中,稍后由调用客户端读取(此队列在其事务之外也是不可见的)。如果您使用 SQL*Plus,如果您设置了 SET SERVEROUTPUT ON,则会在过程结束时自动读取并显示队列。

存在其他方法来跟踪程序运行时的进度:

  • 你可以write to a file反而。 UTL_FILE.put_line如果参数autoflush设置为true,将直接写入。
  • 您可以使用 DBMS_APPLICATION_INFO 设置 session 变量.可以通过查询 v$session 使用另一个 session 读取这些变量.
  • 你可以使用 AUTONOMOUS_TRANSACTIONS在专用表中记录进度信息。该表可以同时被另一个 session 查询。

如您所见,您需要另一个进程来读取写入的信息。在某些应用程序中,这将通过在新的单独进程中运行主批处理作业来实现,例如通过调用 DBMS_JOBDBMS_SCHEDULER而调用事务在进度表或文件上循环,直到作业完成。

SQL*Plus 不是交互式客户端,您需要一些更复杂的环境才能实现此功能。

https://stackoverflow.com/questions/12259097/

相关文章:

parsing - 关于如何实现 BASIC 语言解析器/解释器的任何建议?

spring - 如何从自定义 java 组件中的上下文属性占位符标记获取属性

php - yii cactivedataprovider默认指定排序,但前台使用AJAX排序无效

php - 如何使用 php 获取 URL 主机

vb.net - 获取文本框以仅接受 vb.net 中的字符

javascript - 预期的十六进制数字

php - 如何将所有文件名放入php数组

python - 我如何将参数传递给鼠兔回调

Vb.net - 仅在单击项目时显示上下文菜单条

visual-studio-2010 - 当我尝试在 VS 2010 中运行 Nuint 测试时,此