Oracle все еще показывает оператор спула, несмотря на то, что сервер отключен?

Я запускаю следующие команды:

SET PAGESIZE 1000 LINESIZE 500 ECHO OFF TRIMS ON TAB OFF FEEDBACK OFF HEADING OFF SERVEROUTPUT OFF

SPOOL c:/filea1.sql
SELECT /*INSERT*/ * FROM TBL WHERE A = 1;

SPOOL c:/filea2.sql
SELECT /*INSERT*/ * FROM TBL WHERE A = 2;

SPOOL c:/filea3.sql
SELECT /*INSERT*/ * FROM TBL WHERE A = 3;

Каждый файл, кроме последнего, имеет оператор spool в последней строке файла, например:

row1
row2     
SQL> spool C:\next_file_name.sql

Я попытался поместить оператор set между каждой парой катушек и оператором select, но результат тот же. Я также попытался разбить строку set на отдельные операторы и поместить их все между spool/select, но результат все тот же.

Какие-либо предложения?


person Moshe    schedule 09.03.2020    source источник
comment
set serveroutput управляет только dbms_output. Это не связано ни с какими другими настройками вывода SQL*Plus.   -  person William Robertson    schedule 10.03.2020
comment
Отключение вывода сервера работает, когда я запускаю то же самое, но только с одним файлом. Разве строка спула SQL› не является dbms_output?   -  person Moshe    schedule 10.03.2020
comment
dbms_output — это пакет с процедурой put_line (среди прочего), которая помещает указанный текст в массив, который клиентское приложение может извлечь и отобразить после завершения вызова базы данных. set serveroutput определяет, хотите ли вы, чтобы SQL*Plus делал это.   -  person William Robertson    schedule 11.03.2020


Ответы (1)


Решение состоит в том, чтобы поместить код, который вы разместили:

set pagesize ...

...

SELECT /*INSERT*/ * FROM TBL WHERE A = 3;

в скрипт .sql (назовем его moshe.sql). Затем в командной строке SQL * Plus запустите этот скрипт:

SQL> moshe.sql

Это заставит результат выглядеть так, как вы ожидали.

Кстати, не забудьте spool off когда закончите (вы "забыли" сделать это в своем коде).

person Littlefoot    schedule 09.03.2020
comment
Хорошо, я пытаюсь запустить sqlplus из командной строки (в Windows), получая ORA-12560 TNS: Ошибка адаптера протокола. Погуглил, но не уверен, что с этим делать. Опубликую еще один вопрос, надеюсь, скоро приму ваш ответ :) - person Moshe; 10.03.2020
comment
Я использовал функцию запуска как сценарий в Oracle SQL Developer с @C:/file.sql, и она работает просто великолепно! Спасибо :) - person Moshe; 10.03.2020