Подтвердить что ты не робот

Как эхо-текст во время выполнения 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
4b9b3361

Ответ 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