将DBMS_OUTPUT.PUT_LINE结果发送到Postgres中的外部文件

时间:2018-07-11 11:59:08

标签: postgresql database-migration

我很少有包含选择查询和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结果转移到他们的文本文件吗?

0 个答案:

没有答案