Está en la página 1de 17

15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

Esta es la versión en caché de https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida-de-una-consulta/ de Google. Se trata de una


captura de pantalla de la página tal como esta se mostraba el 13 Dic 2017 15:21:18 GMT.
Es posible que la página haya sufrido modificaciones durante este tiempo. Más información

Versión completa Versión de solo texto Ver origen


Sugerencia: para encontrar rápidamente tu término de búsqueda en esta página, pulsa Ctrl+F o ⌘-F (Mac) y utiliza la barra de búsqueda.

Orlando Olguín Olvera

…and justice for all

Dando formato a la salida de una consulta

AGOSTO 16, 2008 11 COMENTARIOS (HTTPS://ORLANDOOLGUIN.WORDPRESS.COM/2008/08/16/COMO-DAR-


FORMATO-A-LA-SALIDA-DE-UNA-CONSULTA/#COMMENTS)

En esta sección, abordo el tema de cómo dar el formato a las consultas que hacemos a la base de datos, por medio del cliente de
Oracle, el Sql Plus.

Todos los que hemos tenido acceso a un prompt de Oracle por medio del Sql Plus, nos hemos topado con el problema de que las
consultas que hacemos, nos arrojan resultados algo revueltos como lo que se muestra a continuación:

SQL> select * from dba_users;


USERNAME USER_ID PASSWORD
------------------------------ ---------- ----------------------------
ACCOUNT_STATUS LOCK_DAT EXPIRY_D
-------------------------------- -------- --------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED
------------------------------ ------------------------------ --------
PROFILE INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------
EXTERNAL_NAME
----------------------------------------------------------------------
SALT 25 4195FE23CF28FA4E
OPEN
USERS TEMP 01/07/08
USERNAME USER_ID PASSWORD
------------------------------ ---------- ----------------------------
ACCOUNT_STATUS LOCK_DAT EXPIRY_D
-------------------------------- -------- --------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED
------------------------------ ------------------------------ --------
PROFILE INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------
EXTERNAL_NAME
----------------------------------------------------------------------
PRUEBA DEFAULT_CONSUMER_GROUP
USERNAME USER_ID PASSWORD
------------------------------ ---------- ----------------------------
ACCOUNT_STATUS LOCK_DAT EXPIRY_D
-------------------------------- -------- --------
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED
------------------------------ ------------------------------ --------
PROFILE INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------
EXTERNAL_NAME
----------------------------------------------------------------------
SYSTEM 5 9887149C9890214A
OPEN
SYSTEM TEMP 01/07/08

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 1/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
¿Le entendieron? Ja, creo que no mucho verdad? Bueno, después de ver lo que muestro en éste post, tendrán muchas herramientas
para poder dar formato a la salida de las consultas. Así pues, comencemos:

Definiendo el área de trabajo

Primero, tenemos que definir el comportamiento del área donde estaremos trabajando. Para esto, usaremos los siguientes comandos
que no requieren de un punto y coma (;):

set linesize n

Cambia el tamaño de la línea a los n caracteres. después del último caracter en un renglón, le agrega espacios para rellenar hasta el
valor asignado. Se puede abreviar como set lines n.

Por ejemplo:

SQL> set lines 30


SQL> select username, password
2 from dba_users
3 where rownum < 5
4 /

USERNAME
------------------------------
PASSWORD
------------------------------
SALT
4195FE23CF28FA4E

SYSTEM
9887149C9890214A

SYS
4790272FCF800D71

USERNAME
------------------------------
PASSWORD
------------------------------
ADMAUD
A101B2757316EC78

4 rows selected.

y con el cambio pertinente:

SQL> set lines 80


SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

4 rows selected.

set pagesize n

Define la cantidad de renglones que se mostrarán entre títulos. Los renglones que ocupa cada título también cuentan en n. Se puede
abreviar como set pages n. Así, en el siguiente ejemplo se vería:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 2/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> set pages 4


SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E

USERNAME PASSWORD
------------------------------ ------------------------------
SYSTEM 9887149C9890214A

USERNAME PASSWORD
------------------------------ ------------------------------
SYS 4790272FCF800D71

USERNAME PASSWORD
------------------------------ ------------------------------
ADMAUD A101B2757316EC78

4 rows selected.

y con el cambio:

SQL> set pages 100


SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

4 rows selected.

Si n = 0, entonces, en la salida, no aparecen títulos como se ve en el ejemplo siguiente:

SQL> set pages 0


SQL> /
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

4 rows selected.

set feedback on|off

Dependiendo de si está prendido (on) o apagado (off), muestra o no, la cantidad de registros que se obtuvieron en la consulta:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 3/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> set feedback off


SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78
SQL> set feedback on
SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

4 rows selected.

set timing on|off

De acuerdo a su valor, prendido (on) o apagado (off); se implementará o no, un cronometro para la consulta que se ejecute como se
muestra a continuación:

SQL> set timing on


SQL> /

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

4 rows selected.

Elapsed: 00:00:00.01

set pause on|off

Si está prendido (on), genera una pausa al iniciar la consulta y cada vez que se cumplan los n registros correspondientes al comando
set pagesize n. La pausa se “rompe” cuando se teclea [Enter].

set trimspool on|off

Cuando se prende, el exceso de espacios que usa SQL*Plus para rellenar hasta cumplir con los n caracteres usados en set linesize, son
eliminados dejando sólo hasta donde llega el último caracter.

Esto no se ve al momento de ver el resultado de una consulta, sin embargo al momento de generar un archivo con spool, se verán los
resultados de manera importante. Por ejemplo:

Configuro aquí el ancho de la línea a 1,000 caracteres, con lo cual, SQL*Plus rellenará con espacios hasta completarlos.

SQL> set linesize 1000


SQL> set pagesize 30000

Ahora, puedo generar un archivo de texto que llamaré file_1k_chars_raw.txt, con el resultado de una consulta a la vista
DBA_OBJECTS con todos los objetos del sistema:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 4/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> spool file_1k_chars_raw.txt


SQL> select object_id,
2 object_name
3 from dba_objects;

OBJECT_ID OBJECT_NAME
---------- -----------------------------------------------------------
20 ICOL$
46 I_USER1
28 CON$
15 UNDO$
29 C_COBJ#
3 I_OBJ#
25 PROXY_ROLE_DATA$
...
15216 DBMS_NETWORK_ACL_UTILITY
15217 USER_NETWORK_ACL_PRIVILEGES
15218 USER_NETWORK_ACL_PRIVILEGES
15219 DBMS_NETWORK_ACL_ADMIN
15220 DBMS_NETWORK_ACL_UTILITY
15227 WRM$_DEEP_PURGE_INTERVAL

14913 rows selected.

SQL> spool off

Una vez esto, vamos a ver el tamaño del archivo resultante:

SQL> ! ls -lha file_1k_chars_raw.txt


-rw-r--r-- 1 oracle oinstall 15M Jun 25 00:44 file_1k_chars_raw.txt

Con lo que se ve que quedó de un tamaño muy grande, 15MB. Esto es porque fueron casi 15,000 registros multiplicados por 1,000
caracteres, son 15 millones de caracteres.

Ahora con el comando prendido, veremos qué se obtiene, esta vez, mi archivo de prueba se llama file_1k_char_trim.txt:

SQL> set trimspool on


SQL> spool file_1k_chars_trim.txt
SQL> /

OBJECT_ID OBJECT_NAME
---------- -----------------------------------------------------------
20 ICOL$
46 I_USER1
28 CON$
15 UNDO$
29 C_COBJ#
3 I_OBJ#
25 PROXY_ROLE_DATA$
41 I_IND1
54 I_CDEF2
...
15218 USER_NETWORK_ACL_PRIVILEGES
15219 DBMS_NETWORK_ACL_ADMIN
15220 DBMS_NETWORK_ACL_UTILITY
15227 WRM$_DEEP_PURGE_INTERVAL

14913 rows selected.

SQL> ! ls -lha file_1k_chars_trim.txt


-rw-r--r-- 1 oracle oinstall 436K Jun 25 00:46 file_1k_chars_trim.txt

Como se puede observar, sólo por quitar los espacios de relleno, bajó a tan sólo 436KB, lo cual es una diferencia drástica, en este caso
por sólo ocupar dos columnas del listado, el archivo resultante ocupa apenas el 3% del original.

set long n (hasta 2,000,000,000)

Sirve para mostrar n caracteres de tipos de datos LONG, LOB, BFILE y XMLType.
https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 5/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
Aunque ya está obsoleto el tipo de datos LONG, puede ser que alguna aplicación vieja aún lo use, y ciertamente, las vistas del
diccionario de datos de Oracle, lo siguen usando. Por ejemplo en la vista DBA_VIEWS:

SQL> desc dba_views


Name Null? Type
----------------------------------------- -------- ------------------
OWNER NOT NULL VARCHAR2(30)
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)
EDITIONING_VIEW VARCHAR2(1)
READ_ONLY VARCHAR2(1)

Este tipo de datos es el precursor del CLOB (hasta 8TB), es decir, es un campo de caracteres muy grande (hasta 2GB). Por sí solo,
muestra unos cuantos caracteres al hacer un query:

SQL> select view_name,


2 text
3 from dba_views
4 where rownum < 3;

VIEW_NAME TEXT
------------------------------ ---------------------------------------
ALL_XML_SCHEMAS2 select u.name, s.xmldata.schema_url,
case when bitand(to_number(s.xmld

GV_$XSTREAM_CAPTURE select INST_ID, SID, SERIAL#, CAPTURE#,


STAR

Y con la corrección:

SQL> set long 99999


SQL> /
VIEW_NAME TEXT
------------------------------ ---------------------------------------
ALL_XML_SCHEMAS2 select u.name, s.xmldata.schema_url,
case when bitand(to_number(s.xmldata.fl
then 'NO' else 'YES' end,
xdb.dbms_xmlschema_int.xdb$Oid2IntName(
case when bitand(to_number(s.xmldata.fl
then s.xmldata.schema_url
...
GV_$XSTREAM_CAPTURE select INST_ID, SID, SERIAL#, CAPTURE#,
STARTUP_TIME, STATE, TOTAL_PREFILTER_DI
TOTAL_PREFILTER_EVALUATIONS,TOTAL_MESSA
CAPTURE_MESSAGE_NUMBER, CAPTURE_MESSAGE
TOTAL_MESSAGES_CREATED, TOTAL_FULL_EVAL
TOTAL_MESSAGES_ENQUEUED, ENQUEUE_TIME,

Formateando las columnas

Ahora, después de haber formateado el área de trabajo, al consultar algunas tablas, el ancho de cada columna, hace que aún así, la
información de un solo registro, se vea en varios renglones como se muestra a continuación:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 6/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

TBS TOTAL LIBRE USADO PORC_U


------------------------------ ---------- ---------- ---------- ------
SUGERENCIA
----------
DATOS 600 439 161 26.833
-410.58824
INDICES 400 390 10
-388.23529
SYSAUX 300 178.9375 121.0625 40.354
-157.57353
SYSTEM 300 88.359375 211.640625 70.54
-51.011029
TB_AUD 500 496 4
-495.29412
TB_AUD_INDX 500 494 6
-492.94118
UNDOTBS 500 450.75 49.25
-442.05882
USERS 500 16.0625 483.9375 96.
69.3382353

8 rows selected.

Para lograr que se vea de mejor forma, tendremos que darle un correcto formato a las columnas. Para esto, tenemos el comando:

column nombre_columna format formato

Donde:

nombre_columna es el nombre que tendrá nuestra columna o el alias que la representa.

formato es la forma en que daremos una longitud en caracteres para un tipo caracter y el formato para los datos numéricos de la
siguiente forma:

Caracter:

an [word_wrapped] donde n es la longitud de caracteres que tendrá; la palabra word_wrapped, hace que los datos contenidos por esta
columna, sean recortados a la longitud asignada sin cortar las palabras, y cada línea es justificada a la izquierda sin espacios ni
caracteres como TAB.

Numérico:

9|0 con cualquiera de los dos, se reserva una posición para el número que aparecerá, con 9, se reserva un espacio en blanco, con 0 en
vez de un espacio, se pone un 0 que ocupará la posición.; se pueden usar comas y puntos para delimitar las cifras.

Si por alguna razón, se reusa una columna que originalmente era caracter de tipo word_wrapped y después se cambia a númerico
con un formato con 0s y 9s, el número tendrá este último formato, pero justificado a la izquierda. Para evitar esto, hay que limpiar el
formato de la columna con la opción que se ve aquí después de los siguientes ejemplos.

Ejemplos:

column tbs format a25 word_wrapped


column porc_usado format 990.00
column libre format 999,990.00
column sugerencia format 999,990.00
column total format 999,990.00
column usado format 999,990.00

Con esto, cambia radicalmente la forma en que se ve la información resultante de la consulta:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 7/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> /
Enter value for orden: 1
old 12: order by &orden
new 12: order by 1

TBS TOTAL LIBRE USADO PORC_USA


------------------------- ----------- ----------- ----------- --------
DATOS 600.00 439.00 161.00 26.
INDICES 400.00 390.00 10.00 2.
SYSAUX 300.00 178.38 121.63 40.
SYSTEM 300.00 87.19 212.81 70.
TB_AUD 500.00 495.00 5.00 1.
TB_AUD_INDX 500.00 490.00 10.00 2.
UNDOTBS 500.00 429.69 70.31 14.
USERS 500.00 499.81 0.19 0.

8 rows selected.

Para limpiar el formato de una columna, se usa el comando:

column nombre_columna clear

Añadiendo títulos

Para añadir un títulos, subtítulos, encabezados, pies de página al resultado de la consulta, tenemos varios comandos: TTITLE,
BTITTLE, REPHEADER, REPFOOTER. Estos, se describen de la siguiente forma:

comando” | [skip num_renglones [center | right | left | col num_columna] ‘Título’ … | off

Si se usa la opción de comando ”, por default, pone como título la parte del select que muestra las columnas que se están trayendo,
así como el número de página y la fecha.
El encabezado (repheader) y el pie de página (repfooter), se presentan cada vez que se repiten los encabezados de un resultado de
consulta de acuerdo al valor de set pagesize.
Si se usa la otra opción, se puede poner como tal, un título predefinido por nosotros, con un salto de num_renglones (con skip) y
después de saltar el num_renglones, se centra, alínea a la izquierda o la derecha (center, left, right) o se inicia en una columna en
específico (col num_columna) a poner el texto que se ponga. Se puede repetir más veces para poner subtítulos.
Si se elige la opción off, se desactivan las opciones.

Por ejemplo:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 8/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> select sysdate from dual;

SYSDATE
--------
15/09/08

SQL> set lines 60


SQL> ttitle ''
SQL> btitle ''
SQL> /

Lun Sep 15 page 1


select sysdate from dual

SYSDATE
--------
15/09/08

select sysdate from dual

SQL> ttitle skip 2 center 'Fecha del sistema'


SQL> btitle skip 1 left 'Esa fue la fecha'
SQL> /

Fecha del sistema


SYSDATE
--------
15/09/08

Esa fue la fecha

SQL> ttitle skip 1 center 'Fecha del sistema' -


> skip 1 left 'aquí se presenta la fecha...'
SQL> btitle skip 1 left 'Esa fue la fecha' -
> skip 1 center 'aquí se presentó la fecha...'
SQL> /

Fecha del sistema


aquí se presenta la fecha...
SYSDATE
--------
15/09/08

Esa fue la fecha


aquí se presentó la fecha...

Para desactivar los títulos, nada más se tienen que usar los comandos:

ttitle off
btitle off

Agregando espacio, subtotales…

Ahora, con las instrucciones break y compute, podemos agregar líneas en blanco para el resultado de las consultas, así como calcular
operaciones sobre alguna de las columnas. En el siguiente texto, muestro el formato de cada una de ellas:

break on columna

Sirve para determinar con base en cuál columna se hará un brinco.

compute función of columna1 on columna2

Este comando, nos permite aplicar una función a la columna1 de acuerdo al valor de la columna2. La función a aplicar será una de las
que aparecen a continuación:

SUM Calcula la suma de columna1.


MINIMUM Calcula el mínimo valor de columna1.
MAXIMUM Calcula el máximo valor de columna1.
https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salida… 9/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
AVG Calcula el promedio de columna1.
STD Calcula la desviación estándar de columna1.
VARIANCE Calcula la varianza de columna1.
COUNT Calcula la cantidad de registros NOT NULL de columna1.
NUMBER Calcula el número de registros de columna1.

Por ejemplo:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 10/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

1 select programa, descripcion, clave


2 from tipo
3 where programa in ('SUAVIZANTE', 'EMPLEADO', 'ESTAMPADO', 'CHECA
4* order by programa
SQL> /

PROGRAMA DESCRIPCION CLAVE


-------------------- ------------------------------ -----
CHECADOR ENTRADA ENT
CHECADOR FALTA FAL
CHECADOR SALIDA SAL
CLIENTE CLIENTE EXCELENTE CAAA
CLIENTE CLIENTE BUENO CA
CLIENTE CLIENTE MALO CC
CLIENTE CLIENTE MUY BUENO CAA
CLIENTE CLIENTE REGULAR CB
EMPLEADO EMPLEADO EMPL
EMPLEADO GERENTE GTE
EMPLEADO CHOFER CHOF
ESTAMPADO OTRO TIPO DE ESTAMPADO OTRES
ESTAMPADO ESTAMPADO CON CUADROS CUADR
ESTAMPADO ESTAMPADO LISO LISO
ESTAMPADO ESTAMPADO CON RAYAS RAYAS
SUAVIZANTE SUAVITEL SUAVI
SUAVIZANTE DOWNY DOWNY

17 rows selected.

SQL> break on programa


SQL> /

PROGRAMA DESCRIPCION CLAVE


-------------------- ------------------------------ -----
CHECADOR ENTRADA ENT
FALTA FAL
SALIDA SAL
CLIENTE CLIENTE EXCELENTE CAAA
CLIENTE BUENO CA
CLIENTE MALO CC
CLIENTE MUY BUENO CAA
CLIENTE REGULAR CB
EMPLEADO EMPLEADO EMPL
GERENTE GTE
CHOFER CHOF
ESTAMPADO OTRO TIPO DE ESTAMPADO OTRES
ESTAMPADO CON CUADROS CUADR
ESTAMPADO LISO LISO
ESTAMPADO CON RAYAS RAYAS
SUAVIZANTE SUAVITEL SUAVI
DOWNY DOWNY

17 rows selected.

SQL> compute count of clave on programa


SQL> /

PROGRAMA DESCRIPCION CLAVE


-------------------- ------------------------------ -----
CHECADOR ENTRADA ENT
FALTA FAL
SALIDA SAL
******************** -----
count 3
CLIENTE CLIENTE EXCELENTE CAAA
CLIENTE BUENO CA
CLIENTE MALO CC
CLIENTE MUY BUENO CAA
CLIENTE REGULAR CB
******************** -----
https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 11/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
count 5
EMPLEADO EMPLEADO EMPL
GERENTE GTE
CHOFER CHOF
******************** -----
count 3
ESTAMPADO OTRO TIPO DE ESTAMPADO OTRES
ESTAMPADO CON CUADROS CUADR
ESTAMPADO LISO LISO
ESTAMPADO CON RAYAS RAYAS
******************** -----
count 4
SUAVIZANTE SUAVITEL SUAVI
DOWNY DOWNY
******************** -----
count 2

17 rows selected.

Para mostrar los valores para compute y para break, sólo se ejecutan los comandos sin ningún parámetro, Por ejemplo:

SQL> compute
COMPUTE number LABEL 'number' OF clave ON programa
SQL> break
break on programa nodup

Para limpiar los valores de cada uno de los comandos, se ejecutan las siguientes sentencias:

clear breaks
clear computes

Por ejemplo:

SQL> clear breaks


breaks cleared
SQL> clear computes
computes cleared
SQL>

Caso especial: Añadir total general (o promedio o mínimo o…)

Cuando se requiere que al final del resultado de una consulta, se muestre un total general, se requiere agregar un break a nivel
reporte por medio del comando:

break on report

Para después, agregar como se vio en el punto anterior, un comando que calcule una función a nivel de reporte, en nuestro ejemplo,
usaré la suma como muestro en el comando siguiente:

compute sum label etiqueta of column on report

Nota importante. Para que funcione este tipo de funciones, la columna a la que se le calculará la función, no debe ser la primera.

Poniendo en práctica lo que comento, vamos a ver un ejemplo:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 12/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

SQL> break on report


SQL> compute sum label SUMA of cantidad on report
SQL>
SQL> select object_type, count(*) cantidad
2 from dba_objects
3* group by object_type;

OBJECT_TYPE CANTIDAD
-------------------- ----------
CONSUMER GROUP 5
INDEX PARTITION 80
SEQUENCE 93
QUEUE 19
SCHEDULE 1
TABLE PARTITION 72
RULE 1
PROCEDURE 49
OPERATOR 6
LOB PARTITION 1
WINDOW 2
LOB 120
PACKAGE 461
PACKAGE BODY 447
LIBRARY 113
RULE SET 9
PROGRAM 3
TYPE BODY 81
CONTEXT 1
TRIGGER 3
JOB CLASS 2
UNDEFINED 6
DIRECTORY 2
TABLE 856
INDEX 891
SYNONYM 2404
VIEW 2840
FUNCTION 65
WINDOW GROUP 1
CLUSTER 10
TYPE 940
RESOURCE PLAN 3
EVALUATION CONTEXT 7
JOB 6
----------
SUMA 9600

34 rows selected.

Enviando el resultado a un archivo

Una vez que se ha configurado todo lo que hasta el momento se ha mencionado, se puede enviar el resultado a un archivo de texto.
Con la instrucción:

spool [directorio]nombre_archivo.extensión

comandos y resultados de información…

spool off

Donde directorio, será de acuerdo al sistema operativo con el que se esté trabajando. Si se omite éste dato, el archivo de generará en el
directorio de instalación de Oracle si se trabaja en windows, o en el directorio desde el cual, se ejecutó el sqlplus para linux o unix.

Por ejemplo:

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 13/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

spool /home/oracle/datos.txt

USERNAME PASSWORD
------------------------------ ------------------------------
SALT 4195FE23CF28FA4E
SYSTEM 9887149C9890214A
SYS 4790272FCF800D71
ADMAUD A101B2757316EC78

spool off

Con esto, se generará un archivo llamado datos.txt en /home/oracle. Aquí, si se genera un registro con separación de tabuladores entre
datos y le ponemos una extensión .xls al archivo, lo podremos cargar muy facil en excel.

Conclusiones

Como se puede ver, es muy útil toda ésta información para poder presentar los resultados de las consultas ejecutadas. Los ejemplos
y formatos que muestro, son los que he usado en algún momento.

Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.

Anuncios

FILED UNDER IT-ORACLE TAGGED WITH AVG, BREAK, BREAK ON, BREAKS, BTITLE, CÓMO FORMATEAR LA
SALIDA DE UN QUERY, CLEAR, CLEAR BREAKS, CLEAR COMPUTES, COLUMN, COMPUTE, COMPUTE SUM OF,
COMPUTES, CONSULTA, DANDO FORMATO, DANDO FORMATO A LA SALIDA DE UNA CONSULTA, DAR FORMATO,
FEEDBACK, FORMAT, FORMATO, LINES, LINESIZE, MAXIMUM, MINIMUM, OFF, ON, ORACLE, PAGES, PAGESIZE, PAUSE,
QUERY, REPFOOTER, REPHEADER, SALIDA, SET, SPOOL, SQL+, SQLPLUS, SUM, TIMING, TTITLE

11 Responses to Dando formato a la salida de una consulta

Pingback: Manos a la obra – Instalando PeopleSoft « unmexicanodistinto

Benja says:
septiembre 13, 2015 en 10:10 am
La información me sirvió mucho, gracias por el aporte.
Ahora quisiera saber como hacer que se imprima solo el total de registros encontrados o borrados, es decir.. que solo muestre “4
rows selected” sin la visualizar los registros.

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 14/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera

i
Rate This

Orlando Olguín Olvera says:


septiembre 13, 2015 en 8:30 pm
Hola Benja.

Esa sí está difícil de esa manera como la pides.

Lo más fácil, es que hagas un select count(*) from tabla where condiciones;

Orlando.

i
Rate This

Rafael says:
diciembre 7, 2015 en 3:17 pm
Muy buen aporte, excelente XD. Quisiera saber si existe alguna forma de indicar en una columna, que muestre los datos juntados
a la derecha; y no como es de costumbre que aparecen juntados a la izquierda. Igual gracias de antemano por la información.

i
Rate This

Orlando Olguín Olvera says:


diciembre 16, 2015 en 3:14 pm
Hola Rafael.

No hay algo como un comando que justifique la información, tendrias qué hacer uso de cosas como RPAD, LPAD, TRIM,
TO_CHAR, etcétera.

Orlando.

i
Rate This

luisbenajmin says:
enero 25, 2016 en 2:38 pm
hola una pregunta como hago para poder dar color a una fila si el archivo a exportar es .csv , ademas como hago para hacer una
consulta con parametros dinamicos es decir que a la hora que ejecute el .sql , en sqlplus me pida algun parametro para la
consulta, muchas gracias.

i
Rate This

Orlando Olguín Olvera says:


enero 25, 2016 en 3:19 pm
Hola Luis.

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 15/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
Si es un archivo csv, es un archivo de texto, por lo que no tiene atributos como para dar color a un registro, eso lo tendrías qué
hacer ya en la hoja de cálculo donde lo cargues.

Por otro lado, en mis scripts útiles para un DBA, podrás ver cómo paso parámetros a un archivo sql:

h ps://orlandoolguin.wordpress.com/2010/02/26/scripts-utiles-para-un-dba/

Espero te sirvan.

Orlando.

i
Rate This

Rafa VM says:
febrero 5, 2016 en 10:55 am
Buen a porte para los que empezamos en esto. Cuando Mando una búsqueda a un archivo *.csv, mi campo Razon Social con
tiene comas, entonces al abrir el csv me separa ese campo. Como podre hacer caso omiso de esas comas?

i
Rate This

Orlando Olguín Olvera says:


febrero 7, 2016 en 12:31 pm
Hola Rafa.

Puedes poner comillas (“) para delimitar tu información y separarla por pipes (|):

select ‘”‘ || campo1 || ‘”|”‘ || campo2 || ‘”‘


from tabla;

De tal forma, que el resultado final será algo así como:

“James Hetfield”|”MetallicA”
“Tom Araya”|”Slayer”

Así, podrás usar el | como delimitador de campos y luego como estará entre comillas, tomará todo el texto para subirlo como un
campo.

Ten cuidado si el campo tiene comillas en el dato que guardó porque eso te causará “ruido” en tu archivo.

Orlando.

i
Rate This

Marcos says:
octubre 25, 2017 en 4:40 pm
Muy bueno tu aporte, no se si me leas, pues hace mas de un año del ultimo comentario. Tengo una pregunta : me gustaria saber
si hay forma de darle color o inverso o parpadeante a uno de los campos mostrados o bien al hacer una resta de 2 campos
numericos y mostrarlo en color inverso; espero me haya explicado.

i
https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 16/17
15/12/2017 Dando formato a la salida de una consulta | Orlando Olguín Olvera
Rate This

Orlando Olguín Olvera says:


octubre 26, 2017 en 9:46 am
Hola Marcos.

Tänel tiene en su sitio un post donde habla de cómo colorizar la salida, sí se puede:

h p://blog.tanelpoder.com/2012/09/19/sqlplus-is-my-second-home-part-6-colorizing-sqlplus-and-terminal-output/

De aquí, viene en una liga ,el siguiente ejemplo:

col a for a20


col b for a20
col c for a20
col d for a20
col e for a20
col f for a20
col g for a20
col h for a20

select
chr(27)||'[40m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ a
, chr(27)||'[41m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ b
, chr(27)||'[42m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ c
, chr(27)||'[43m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ d
, chr(27)||'[44m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ e
, chr(27)||'[45m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ f
, chr(27)||'[46m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ g
, chr(27)||'[47m’||chr(27)||'[1;’||to_char(rownum+29)||’mTest’ h
from dual
connect by level<=8
union all
select chr(27)||'[0m', null, null, null, null, null, null, null from dual
union all
select
chr(27)||'[32m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' a
, chr(27)||'[33m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' b
, chr(27)||'[34m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' c
, chr(27)||'[35m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' d
, chr(27)||'[36m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' e
, chr(27)||'[37m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' f
, chr(27)||'[38m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' g
, chr(27)||'[39m'||chr(27)||'[1;'||to_char(rownum+29)||'mTest' h
from dual
connect by level<=8
union all
select chr(27)||'[0m', null, null, null, null, null, null, null from dual
/

De momento, no lo he aplicado a mis scripts:

h ps://orlandoolguin.wordpress.com/2010/02/26/scripts-utiles-para-un-dba/

Pero tal vez lo haga.

Orlando.

i
Rate This

Blog de WordPress.com.

https://webcache.googleusercontent.com/search?q=cache:60cYdQNGDbsJ:https://orlandoolguin.wordpress.com/2008/08/16/como-dar-formato-a-la-salid… 17/17

También podría gustarte