Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie setze ich Standardwerte für jede Spalte in der Tabelle?

Das können wir nicht. Wir müssen alle Spalten und ihre einzelnen NVL()-Funktionen eingeben. Ich weiß, das scheint viel Aufwand zu sein, aber bedenken Sie, was passieren würde, wenn eine Ihrer Spalten ein DATE oder ein anderer "exotischer" Datentyp ist.

Wenn Sie viele Spalten haben und wirklich Aufwand sparen wollen, können Sie die Klauseln aus dem Data Dictionary generieren:

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

Schneiden Sie die Ergebnismenge aus und fügen Sie sie in einen Editor ein.

Sobald Sie mit dieser Route beginnen, können Sie leicht anspruchsvoller werden:

 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;