Oracle
 sql >> база данни >  >> RDS >> Oracle

Предотвратяване на sqlplus съкращаване на имена на колони, без индивидуално форматиране на колони

Едно нещо, което можете да опитате, е да генерирате динамично команди "колона x формат a20". Нещо като следното:

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

Имайте предвид, че този пример ще работи само с VARCHAR2. Ще трябва да добавите декодиране, например, за да промените генерираната команда "колона" за ДАТИ или ЧИСЛА.

АКТУАЛИЗАЦИЯ:Оказва се, че оригиналният SQL всъщност не променя поведението на SQL*Plus. Единственото нещо, за което се сещам, е да преименувам имената на полетата на еднознакови стойности A, B, C и т.н. по следния начин:

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

Той ще генерира резултат, подобен на:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle10g SQL опорна точка

  2. Как да върна множество редове от съхранена процедура на oracle от множество курсори?

  3. ORA-4031 грешки с Direct NFS

  4. Не могат да се създадат първоначални връзки за проблеми с пула в Grails

  5. Как да съхранявате неограничен брой знаци в Oracle 11g?