Oracle
 sql >> Database >  >> RDS >> Oracle

Come inserire i valori predefiniti per ogni colonna nella tabella?

Non possiamo farlo. Abbiamo bisogno di digitare tutte le colonne e le loro singole funzioni NVL(). So che sembra un grande sforzo, ma considera cosa accadrebbe se una qualsiasi delle tue colonne fosse una DATE o qualche altro tipo di dati "esotico".

Se hai molte colonne e vuoi davvero risparmiare fatica puoi generare le clausole dal dizionario dei dati:

 select 'nvl('|| column_name || ', 0)' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;

Taglia e incolla il set di risultati in un editor.

Una volta che inizi questo percorso è facile diventare più sofisticati:

 select case when column_id > 1 then ',' end ||
       'nvl('|| column_name || ',' ||
       case when data_type = 'DATE' then 'sysdate'
            when  data_type = 'VARCHAR2' then '''DEF''' 
            else '0' end ||
       ')' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;