从 sqlplus 中的过程将输出写入文件 - SPOOL
Posted
技术标签:
【中文标题】从 sqlplus 中的过程将输出写入文件 - SPOOL【英文标题】:writing output to a file from a procedure in sqlplus - SPOOL 【发布时间】:2015-02-26 12:04:47 【问题描述】:由于无法使用 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 () 语法可以帮助我,但这是同一个故事。
任何解决方法?
【问题讨论】:
community.oracle.com/thread/320407 这个例子和我有同样的问题 - 如果你复制/粘贴上一篇文章中的块并检查输出文件,你会注意到我的意思。 【参考方案1】:好的,终于知道问题出在哪里了。标准的 SQL PLUS 开关效果很好(trimspool、termout、sqlprompt 等),但是您必须直接使用 SQL Plus。如,不要为此使用 Oracle SQL Developer。 您在其中打开的那些该死的工作表在 SQL Plus 相关内容中的行为似乎有所不同。 我把我正在做的所有事情都转移到我用 SQL Developer 连接的机器上,直接登录到 SQL Plus,从命令行执行我的 .sql 脚本,瞧!一个干净的 .csv 文件。
【讨论】:
以上是关于从 sqlplus 中的过程将输出写入文件 - SPOOL的主要内容,如果未能解决你的问题,请参考以下文章