从 sqlplus 中的过程将输出写入文件 - SPOOL
writing output to a file from a procedure in sqlplus - SPOOL
由于无法使用 UTL_FILE(缺乏特权,更改不会发生:/)我正在使用 SPOOL 将我的程序输出到 CSV 文件中。我将 serveroutput 设置为 'on',过程使用 DBMS_OUTPUT.PUT_LINE。
我试图将其包装在 sql 文件中。
我遇到问题的部分:
spool output.csv
/
DECLARE
...
BEGIN
...
END;
/
spool off
quit
/
问题是,这样整个块都会进入我的输出文件,然后是输出,而我只想要输出。
我也尝试使用带有 PIPELINED 关键字的函数并通过 PIPE ROW 方法输出行,希望 SELECT * FROM TABLE () 语法能帮助我,但它是同样的故事。
任何解决方法?
好的,终于弄清楚问题出在哪里了。标准 SQL PLUS 开关效果很好(trimspool、termout、sqlprompt 等)但是您必须直接使用 SQL Plus。如中,请勿为此使用 Oracle SQL Developer。
您在其中打开的那些该死的工作表在 SQL Plus 相关内容中的表现似乎有所不同。
我将我正在做的所有事情都转移到我用 SQL Developer 连接的机器上,直接登录到 SQL Plus,从命令行执行我的 .sql 脚本,瞧!一个干净的 .csv 文件。
由于无法使用 UTL_FILE(缺乏特权,更改不会发生:/)我正在使用 SPOOL 将我的程序输出到 CSV 文件中。我将 serveroutput 设置为 'on',过程使用 DBMS_OUTPUT.PUT_LINE。 我试图将其包装在 sql 文件中。
我遇到问题的部分:
spool output.csv
/
DECLARE
...
BEGIN
...
END;
/
spool off
quit
/
问题是,这样整个块都会进入我的输出文件,然后是输出,而我只想要输出。
我也尝试使用带有 PIPELINED 关键字的函数并通过 PIPE ROW 方法输出行,希望 SELECT * FROM TABLE () 语法能帮助我,但它是同样的故事。
任何解决方法?
好的,终于弄清楚问题出在哪里了。标准 SQL PLUS 开关效果很好(trimspool、termout、sqlprompt 等)但是您必须直接使用 SQL Plus。如中,请勿为此使用 Oracle SQL Developer。 您在其中打开的那些该死的工作表在 SQL Plus 相关内容中的表现似乎有所不同。 我将我正在做的所有事情都转移到我用 SQL Developer 连接的机器上,直接登录到 SQL Plus,从命令行执行我的 .sql 脚本,瞧!一个干净的 .csv 文件。