我正在尝试使用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?
答案 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