sql >> Base de Datos >  >> RDS >> Oracle

Prevención del truncamiento de sqlplus de nombres de columna, sin formato de columna individual

Una cosa que puede intentar es generar dinámicamente comandos de "columna x formato a20". Algo como lo siguiente:

set termout off
set feedback off

spool t1.sql
select 'column ' || column_name || ' format a' || data_length
from all_tab_cols
where table_name='YOUR_TABLE'
/
spool off

@t1.sql
set pagesize 24
set heading on
spool result.txt
select * 
from  YOUR_TABLE;
and   rownum < 30;
spool off

Tenga en cuenta que esta muestra solo funcionará con VARCHAR2. Debería agregar decodificación, por ejemplo, para cambiar el comando de "columna" generado para FECHAS o NÚMEROS.

ACTUALIZACIÓN:Resulta que el SQL original realmente no cambia el comportamiento del SQL*Plus. Lo único que se me ocurre es cambiar el nombre de los campos a valores de un carácter A, B, C, etc. de la siguiente manera:

select 'column ' || column_name ||
       ' heading "' ||
       chr(ascii('A') - 1 + column_id) ||
       '"'
from all_tab_cols
where table_name='YOUR_TAB_NAME'

Generará una salida similar a:

column DEPT_NO heading "A"
column NAME heading "B"
column SUPERVIS_ID heading "C"
column ADD_DATE heading "D"
column REPORT_TYPE heading "E"