我试图找到一种方法来捕获输出从一个sql语句。我想使用的调试器不支持DBMS_OUTPUT,所以这不是一个选项。这也是一个活动数据库,因此创建新表或过程是不可能的。有什么想法吗?
declare
type NumberArray is array(100) of clock_in_out.pr_emp_id%Type;
type DateArray is array(1000) of date;
emps NumberArray;
times DateArray;
BEGIN
select unique pr_emp_id
BULK COLLECT INTO emps
from clock_in_out;
FOR i IN emps.FIRST .. emps.LAST
LOOP
select time_in_out
BULK COLLECT INTO times
from clock_in_out
where pr_emp_id = emps(i)
order by time_in_out;
FOR j IN 2 .. times.COUNT LOOP
IF ( 86400 * ( times(j) - times(j-1) )) <= 5 THEN
DBMS_OUTPUT.PUT_LINE('Result Found' );
DBMS_OUTPUT.PUT_LINE(emps(i) );
DBMS_OUTPUT.PUT_LINE( times(j) );
DBMS_OUTPUT.PUT_LINE( 86400 * ( times(j) - times(j-1) ));
DBMS_OUTPUT.PUT_LINE(' ');
END IF;
END LOOP;
END LOOP;
END;
/
3条答案
按热度按时间iibxawm41#
嗯,没有机会创建一个表,或一个(表-)函数,实际上我只看到以下选项:
1)如果它适用于具有volatile输出,并且您的调试器可以显示会话信息,则用户
DBMS_APPLICATION_INFO.set_action(action_name => 'up to 32 characters');
显示输出2)如果你有一个目录的(写-)访问权,你可以使用
utl_file - package
(fopen,put_line,close)把你的输出写到日志文件中3)您可以使用
utl_tcp - package
将输出发送到客户端上的一个连接应用程序(open_connection,write_text,close_connection),但这需要ACL设置,允许您建立这样的连接ev7lccsx2#
1.在另一个数据库(最好是test db)中创建日志记录表。
1.创建db_link
1.将日志插入日志记录表。
问题解决了您没有在活动数据库中创建任何对象。说真的,开关调试器。Oracle SQL Developer是免费的,支持dbms_output。
ejk8hzay3#
在SQL-Developer中,您可能需要添加