Любой способ использовать команду SPOOL SQLPLUS с помощью cx_Oracle, SQL-клиент Python? - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь выполнить сценарий SQL с помощью cx_Oracle, который примерно выглядит как

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

, где я пытаюсь записать результат операторов PL / SQL в файл.Я узнал, что команды SQLPlus не поддерживаются в cx_Oracle.Есть ли способ использовать SPOOL с помощью cx_Oracle?

1 Ответ

0 голосов
/ 04 октября 2018

Нет прямого способа использовать SPOOL в cx_Oracle .

Проблема в том, что 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...