Comment faire écho au texte pendant L'exécution du script SQL dans SQLPLUS

J'ai un fichier batch qui exécute un script SQL dans sqlplus et envoie la sortie à un fichier journal:

Sqlplus utilisateur/pw RowCount.log

Mon fichier journal contient ceci:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production

SQL> SQL> 
  COUNT(*)
----------
     0

SQL> 
  COUNT(*)
----------
     0

Etc. mais c'est plusieurs milliers de lignes de sortie et donc difficile de déterminer quels résultats appartiennent à quelle déclaration.

Je voudrais ajouter un peu de formatage à la sortie, afin que je puisse discerner ce qui s'est passé. Soit un écho de l'instruction exécutée ou manuellement insérer des instructions "echo" dans le script serait bien. Idéalement, cela ressemblerait à ceci:

SQL> select(*) from TableA;
  COUNT(*)
----------
     0

SQL> select(*) from TableB;
  COUNT(*)
----------
     0
22
demandé sur ivan_pozdeev 2013-11-07 22:31:42

3 réponses

, Vous pouvez utiliser SET ECHO ON au début de votre script pour y parvenir, cependant, vous devez spécifier votre script à l'aide de @ au lieu de < (aussi dû ajouter EXIT à la fin):

Test.sql

SET ECHO ON

SELECT COUNT(1) FROM dual;

SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);

EXIT

Terminal

sqlplus hr/oracle@orcl @/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
21
répondu Przemyslaw Kruglej 2013-11-07 22:22:17

La commande prompt fera écho au texte à la sortie:

prompt A useful comment.
select(*) from TableA;

S'affiche comme suit:

SQL> A useful comment.
SQL> 
  COUNT(*)
----------
     0
38
répondu glenneroo 2013-11-08 11:52:13

Vous pouvez changer le nom de la colonne, donc au lieu de "COUNT(*)" vous auriez quelque chose de significatif. Vous devrez mettre à jour votre "RowCount.SQL " script pour cela.

Par exemple:

SQL> select count(*) as RecordCountFromTableOne from TableOne;

Sera affiché comme:

RecordCountFromTableOne
-----------------------
           0

Si vous voulez avoir un espace dans le titre, vous devez l'entourer de guillemets

SQL> select count(*) as "Record Count From Table One" from TableOne;

Sera affiché comme:

Record Count From Table One
---------------------------
            0
0
répondu Ted 2016-08-19 18:23:45