off - sqlplus format output
Cómo hacer eco de texto durante la ejecución del script SQL en SQLPLUS (3)
Tengo un archivo por lotes que ejecuta un script SQL en sqlplus y envía el resultado a un archivo de registro:
Usuario sqlplus / pw <RowCount.sql> RowCount.log
Mi archivo de registro contiene esto:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
SQL> SQL>
COUNT(*)
----------
0
SQL>
COUNT(*)
----------
0
etc. pero son varios miles de líneas de salida y, por lo tanto, es difícil determinar qué resultados pertenecen a qué enunciado.
Me gustaría agregar algún formato al resultado, para poder discernir qué sucedió. O bien, un eco de la instrucción ejecutada o la inserción manual de algunas sentencias "echo" en la secuencia de comandos estaría bien. Idealmente se vería algo como esto:
SQL> select(*) from TableA;
COUNT(*)
----------
0
SQL> select(*) from TableB;
COUNT(*)
----------
0
Puede usar SET ECHO ON
al comienzo de su script para lograr eso, sin embargo, debe especificar su script usando @
lugar de <
(también tuvo que agregar EXIT
al final):
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
El comando de solicitud hará eco de texto a la salida:
prompt A useful comment.
select(*) from TableA;
Se mostrará como:
SQL> A useful comment.
SQL>
COUNT(*)
----------
0
Puede cambiar el nombre de la columna, por lo tanto, en lugar de "COUNT (*)", tendría algo significativo. Deberá actualizar su script "RowCount.sql" para eso.
Por ejemplo:
SQL> select count(*) as RecordCountFromTableOne from TableOne;
Se mostrará como:
RecordCountFromTableOne
-----------------------
0
Si desea tener espacio en el título, debe encerrarlo entre comillas dobles
SQL> select count(*) as "Record Count From Table One" from TableOne;
Se mostrará como:
Record Count From Table One
---------------------------
0