在没有假脱机或 utl_file 的 PL/SQL 中写入文件

Posted

技术标签:

【中文标题】在没有假脱机或 utl_file 的 PL/SQL 中写入文件【英文标题】:Write to a file in PL/SQL without spools or utl_file 【发布时间】:2015-06-18 20:23:56 【问题描述】:

尝试通过过程创建输出文件,但无法修改 init.ora 以允许 utl_file_dir 或创建目录。有没有另一种方法可以在不创建表格并进行简单线轴的情况下完成此操作,不幸的是,这也是不可能的。

【问题讨论】:

【参考方案1】:

没有。您需要访问 init.ora 才能通过 Oracle 以很好的方式完成这项工作。

我能想到的唯一其他选择是使用 Java 过程来进行文件写入。我找不到您需要设置的任何特殊要求才能使用它。阅读主题here。

【讨论】:

为了背负您链接到的文章,这篇文章也很有帮助。 oracle-base.com/articles/8i/file-handling-from-plsql 我之所以找到它,是因为我知道要从您的答案中搜索什么。【参考方案2】:

如果您有权访问 sqlplus,则将 dbms_output.put_line 消息添加到代码中并在 sqlplus 中运行它。运行前输入:

spool <filename you want>

然后

spool off 

关闭文件并停止写入。

可以选择使用 Java 或使用 Java,但您需要额外的权限才能访问文件系统并在 db 上编译 java 方法。

您确实应该有权访问文件系统上的目录。与 dba 交谈,如果有业务需求,您应该能够实现。

【讨论】:

OP 说他不能使用 spool。 OP 需要与他的 dba 交谈 - 总而言之,他无法更改环境的任何内容,也无法通过客户端运行 sqlplus。他到底能做什么!

以上是关于在没有假脱机或 utl_file 的 PL/SQL 中写入文件的主要内容,如果未能解决你的问题,请参考以下文章

PL SQL 过程中的“假脱机”命令问题

PL/SQL - 在将元数据假脱机到文件后更新表

在不使用 UTL_FILE 的情况下从 PL/SQL 中的文件读取/写入数据

Oracle PL/SQL 中的字符编码问题

假脱机多个文件

PL/SQL UTL_FILE:循环如何自动返回下一行?