salida off formatear comandos column sql oracle11g sqlplus

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