- SQL
- PL/SQL
- PL/SQL Avanzato
- DBA
- Forms
- Tips and Tricks
 
 
 

 
 
> Area Sorgenti Oracle  
 

DESC command (Repository)
di Emanuela Marottoli

-> DESC Command (DBMS_SQL)

Un'altra alternativa al comando DESC è l'uso delle tabelle del repository, in particolar modo la USER_TAB_COLUMNS.

Questo script crea un report che visualizza il nome della tabella, le colonne con il tipo di dato, le informazioni sui valori NULL e salva l'output della query in un file.

SET LINESIZE 400
SET PAGESIZE 1000
BREAK ON NOME_TABELLA SKIP 3
SPOOL C:/RISULTATO.TXT

SELECT
table_name nome_tabella,
column_name nome_colonna,
decode(nullable,'N','NOT NULL','Y','') nullo,
decode(data_type, 'NUMBER',ltrim(data_type)||'('||data_precision||
decode(data_scale,'0','',','||data_scale) ||')',ltrim(data_type)||'('||data_length||')' ) tipo
FROM user_tab_columns
WHERE table_name ='&nome_tabella'
ORDER BY column_name;

SPOOL OFF;

-- RISULTATO OTTENUTO CON LO SCRIPT:
NOME_TABELLA NOME_COLONNA NULLO TIPO
CLIENTI COGNOME NOT NULL VARCHAR2(180)
CLIENTI DATA_NASCITA NOT NULL DATE(7)
CLIENTI ETA NOT NULL NUMBER(2)
CLIENTI NOME NOT NULL VARCHAR2(60)
CLIENTI NUOVO_ABBONATO NOT NULL NUMBER(1)
CLIENTI STATO_CIVILE NOT NULL NUMBER(1)
6 rows selected.

-- RISULTATO OTTENUTO CON IL COMANDO 'DESC':
SQL> DESC CLIENTI
Name Null? Type
DATA_NASCITA NOT NULL DATE
ETA   NUMBER(2)
NUOVO_ABBONATO NOT NULL NUMBER(1)
STATO_CIVILE NOT NULL NUMBER(1)
COGNOME NOT NULL VARCHAR2(180)
NOME NOT NULL VARCHAR2(60)

DIFFERENZE TRA I DUE RISULTATI:
- Con lo script viene visualizzato anche il nome della tabella, quindi eliminando la clausola WHERE dalla SELECT è possibile visualizzare la descrizione di tutte le tabelle appartenenti all'utente.
- Con lo script è possibile ordinare le colonne.
- Con lo script è possibile utilizzare ALIAS.
- Con lo script è possibile visualizzare la grandezza del tipo di dato DATA.
- Con lo script viene visualizzato il totale di righe estratte.

-> DESC Command (DBMS_SQL)