Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapobieganie obcinaniu nazw kolumn przez sqlplus bez formatowania poszczególnych kolumn

Jedną z rzeczy, które możesz spróbować, jest dynamiczne generowanie poleceń „kolumna x format a20”. Coś takiego:

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

Zauważ, że ten przykład będzie działał tylko z VARCHAR2. Będziesz musiał dodać dekodowanie, na przykład, aby zmienić wygenerowane polecenie „kolumna” na daty lub liczby.

AKTUALIZACJA:Okazuje się, że oryginalny SQL tak naprawdę nie zmienia zachowania SQL*Plus. Jedyne, o czym mogłem pomyśleć, to zmienić nazwy pól na jednoznakowe wartości A, B, C itd. w następujący sposób:

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

Wygeneruje wynik podobny do:

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. Jak dynamicznie utworzyć zmienną o typie danych tabeli?

  2. Tworzenie tabeli bazy danych w procedurze PL/SQL

  3. Sprawdź, czy parametr ma wartość NULL w klauzuli WHERE

  4. Jak uzyskać informacje o poprzednich rekordach

  5. Jak dodać serwer zarządzania w R12.2?