转自:http://blog.csdn.net/zlowly/article/details/534143
PL/SQL Developer里的Event Monitor不知道是什么版本开始加上去的,一直以来都忽视了这个东东,不知道他是干什么的,最近研究DBMS_PIPE才发觉原来它可以在存储过程等调试过程中实时获取调试信息。使用方法很简单,自己创建一个存储过程
PROCEDURE p_message(msg VARCHAR2) AS
sta NUMBER;
BEGIN
dbms_pipe.pack_message(msg);
sta := dbms_pipe.send_message('MyDebug', 60); -- 把打包好的消息发送给名为MyDebug的管道,超时设置为60秒
END;
直接用这个p_message代替平时使用的dbms_output.put_line就可以了,在调试程序前打开PL/SQL Developer里Event Monitor,选择Event Type为DBMS_PIPE,Event Name填上MyDebug,然后按start开始监听。然后就可以像平常一样运行自己存储过程了,不同的是调试信息是实时显示出来的,而不是像Output那样要等程序执行完才显示,感觉真是方便多了。
要注意的是,你必须要有DBMS_PIPE的执行权限,有关DBMS_PIPE可以在Oracle文档中找到详细解释,我就没必要翻译了。另外也可以使用DBMS_ALERT,它和DBMS_PIPE最大不同的是它基于事务的,消息要commit才会发送。