Как эхо-текст во время выполнения SQL script в SQLPLUS
У меня есть пакетный файл, который запускает SQL script в sqlplus и отправляет вывод в файл журнала:
sqlplus user/pw < RowCount.sql > RowCount.log
Мой файл журнала содержит следующее:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
SQL> SQL>
COUNT(*)
----------
0
SQL>
COUNT(*)
----------
0
и т.д.. но это несколько тысяч строк вывода и, следовательно, трудно определить, какие результаты относятся к какому утверждению.
Я хотел бы добавить некоторое форматирование в вывод, чтобы я мог различить, что произошло. Либо эхо исполняемого оператора, либо ручная установка некоторых выражений "эхо" в script будет прекрасным. В идеале это выглядело бы примерно так:
SQL> select(*) from TableA;
COUNT(*)
----------
0
SQL> select(*) from TableB;
COUNT(*)
----------
0
Ответы
Ответ 1
Вы можете использовать SET ECHO ON
в начале вашего script для достижения этого, однако вы должны указать свой script с помощью @
вместо <
(также нужно было добавить EXIT
в конец):
Test.sql
SET ECHO ON
SELECT COUNT(1) FROM dual;
SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);
EXIT
терминал
sqlplus hr/[email protected] @/tmp/test.sql > /tmp/test.log
test.log
SQL>
SQL> SELECT COUNT(1) FROM dual;
COUNT(1)
----------
1
SQL>
SQL> SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);
COUNT(1)
----------
2
SQL>
SQL> EXIT
Ответ 2
Команда prompt выведет текст на выход:
prompt A useful comment.
select(*) from TableA;
Будет отображаться как:
SQL> A useful comment.
SQL>
COUNT(*)
----------
0
Ответ 3
Вы можете изменить имя столбца, поэтому вместо "COUNT (*)" у вас будет что-то значимое. Вам нужно будет обновить свой "RowCount.sql" script для этого.
Например:
SQL> select count(*) as RecordCountFromTableOne from TableOne;
Будет отображаться как:
RecordCountFromTableOne
-----------------------
0
Если вы хотите иметь место в заголовке, вам нужно заключить его в двойные кавычки
SQL> select count(*) as "Record Count From Table One" from TableOne;
Будет отображаться как:
Record Count From Table One
---------------------------
0