我很少有包含选择查询和dbms_output.put_line
语句的函数。此外,我试图通过脚本(master.sql)执行它们,并且需要将它们相应的dbms_output
结果发送到它们各自的文本文件。
示例功能:
CREATE OR REPLACE FUNCTION myschema.my_func1() RETURNS VOID AS $func$
DECLARE
cur_fetch_my_data CURSOR IS
select col1,col2 from myschema.table1;
BEGIN
DBMS_OUTPUT.put_line('column 1'||CHR(9)||'column 2');
for data_cur in cur_fetch_my_data LOOP
DBMS_OUTPUT.put_line(data_cur.col1||CHR(9)||data_cur.col2);
END LOOP;
END;
$func$ LANGUAGE sql;
用于执行功能的脚本:
--master.sql
begin
dbms_output.serveroutput(true);
end;
\o DUMP_OF_func1.txt
SELECT myschema.my_func1();
\o DUMP_OF_func2.txt
SELECT myschema.my_func2();
执行上述脚本后,所有dbms_output结果都打印在控制台上,而不是文本文件中。唯一转储到文本文件中的是
my_func1
------------
(1 row)
此外,我尝试更改主脚本。我改变了
dbms_output.serveroutput(true)
到
dbms_output.serveroutput(false)
执行此操作后,控制台输出未打印。但是转储到文本文件保持不变。
有人可以告诉我如何将dbms_output
结果转移到他们的文本文件吗?