使用cx_Oracle(Python的SQL客户端)使用SPOOL SQLPLUS命令的任何方法吗?

时间:2018-10-04 09:52:38

标签: python oracle oracle-sqldeveloper cx-oracle

我正在尝试使用cx_Oracle执行SQL脚本,该脚本看起来大致像

SPOOL /tmp/test.log SET echo ON SET serveroutput ON SIZE UNLIMITED BEGIN #SOME_PL/SQL_STATEMENTS END; / SPOOL OFF

试图将PL / SQL语句的结果写入文件中。我知道cx_Oracle不支持SQLPlus命令。有什么方法可以通过cx_Oracle使用SPOOL?

1 个答案:

答案 0 :(得分:1)

cx_Oracle 中没有直接使用SPOOL的方法。

问题是SPOOL SQL * PLUS 的特定命令。这不是Oracle SQL命令。因此,实际的假脱机处理在客户端。当你做类似的事情

SPOOL ON
SET PAGESIZE 0
SET SERVEROUTPUT ON
COLUMN username FORMAT A20

所有命令都是 SQL * PLUS 命令,它们是本地(客户端)命令,它们不会被发送到Oracle服务器,也不会改变Oracle会话的行为。

这些命令仅用于控制Oracle服务器的输出将如何在屏幕上显示(或在SPOOL的情况下写入文件或打印机)。

在大多数情况下,不必以分号;结尾,就可以确定本地命令。

SQL * PLUS 命令的完整参考可以在这里找到:https://docs.oracle.com/database/121/SQPUG/ch_twelve001.htm#SQPUG023