J'ai un fichier de commandes qui exécute un script SQL dans sqlplus et envoie la sortie dans un fichier journal:
sqlplus user/pw <RowCount.sql> 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 il est donc difficile de déterminer quels résultats appartiennent à quelle déclaration.
J'aimerais ajouter un peu de formatage à la sortie, afin de pouvoir discerner ce qui s'est passé. Un écho de l'instruction exécutée ou l'insertion manuelle de certaines instructions "écho" dans le script conviendrait. Idéalement, cela ressemblerait à quelque chose comme ceci:
SQL> select(*) from TableA;
COUNT(*)
----------
0
SQL> select(*) from TableB;
COUNT(*)
----------
0
Vous pouvez utiliser SET ECHO ON
au début de votre script pour y parvenir, vous devez toutefois spécifier votre script à l'aide de @
au lieu de <
(il fallait aussi 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 1. (1) ---------- 2 SQL> SQL> EXIT
La commande Invite renvoie le texte à la sortie:
Prompt A useful comment.
select(*) from TableA;
Sera affiché comme:
SQL> A useful comment.
SQL>
COUNT(*)
----------
0
Vous pouvez modifier le nom de la colonne. Par conséquent, au lieu de "COUNT (*)", vous obtiendrez quelque chose de significatif. Vous devrez pour cela mettre à jour votre script "RowCount.sql".
Par exemple:
SQL> select count(*) as RecordCountFromTableOne from TableOne;
Sera affiché comme:
RecordCountFromTableOne
-----------------------
0
Si vous voulez avoir de l’espace dans le titre, vous devez le mettre entre guillemets
SQL> select count(*) as "Record Count From Table One" from TableOne;
Sera affiché comme:
Record Count From Table One
---------------------------
0