是否可以在执行包中的过程时向用户显示注释.我的包有3个程序.我打电话给每个人.我想在控制台上显示注释,如xyz正在执行的程序,程序执行成功.我在程序中添加了评论,DBMS_OUTPUT.PUT_LINE('PROCEDURE EXECUTED SUCCESSFULLY')但对我没有用.仅供参考我在Windows 7系统中使用oracle 11g.
您无法DBMS_OUTPUT在程序运行时显示有关过程的信息.这是因为DBMS_OUTPUT.put_line不在屏幕上显示数据,而是将数据放入稍后由调用客户端读取的队列中(此队列在其事务之外也是不可见的).如果您使用SQL*Plus,则在程序结束时自动读取并显示队列(如果有)SET SERVEROUTPUT ON.
存在其他方法来跟踪程序运行时的进度:
UTL_FILE.put_line如果参数autoflush设置为true,将直接写入.DBMS_APPLICATION_INFO.可以通过查询使用另一个会话读取这些变量v$session.AUTONOMOUS_TRANSACTIONS在专用表中记录进度信息.该表可以由另一个会话同时查询.正如您所看到的,在编写信息时需要另一个进程来读取信息.在某些应用程序中,这可以通过在新的单独进程中运行主批处理作业来实现,例如通过调用DBMS_JOB或DBMS_SCHEDULER调用事务在进度表或文件上循环,直到作业完成.
SQL*Plus不是交互式客户端,您将需要一些更复杂的环境来实现此功能.
| 归档时间: |
|
| 查看次数: |
3475 次 |
| 最近记录: |