sql >> Database >  >> RDS >> Oracle

Voorkomen van sqlplus-afkorting van kolomnamen, zonder individuele kolomopmaak

Een ding dat u kunt proberen, is om dynamisch "column x format a20"-opdrachten te genereren. Iets als het volgende:

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

Merk op dat dit voorbeeld alleen werkt met VARCHAR2. U zou bijvoorbeeld decodering moeten toevoegen om het gegenereerde "kolom"-commando voor DATE's of NUMBER's te wijzigen.

UPDATE:Het blijkt dat de originele SQL het gedrag van de SQL*Plus niet echt verandert. Het enige wat ik kon bedenken is om de veldnamen te hernoemen naar één tekenwaarde A, B, C, etc.. op de volgende manier:

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

Het genereert de uitvoer vergelijkbaar met:

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


  1. Wat is de JDBC-tegenhanger van het \connect-commando van Postgres?

  2. laravel-databaseverbinding retourneert een niet-gedefinieerde indexfout

  3. Hoe kan ik SQL-activiteit op Oracle volgen?

  4. CHR(0) in REGEXP_LIKE