sql >> Databasteknik >  >> RDS >> Oracle

Hur sätter man standardvärden för varje kolumn i tabellen?

Det kan vi inte göra. Vi måste skriva ut alla kolumner och deras individuella NVL()-funktioner. Jag vet att det verkar vara mycket ansträngning, men fundera på vad som skulle hända om någon av dina kolumner är en DATUM eller någon annan "exotisk" datatyp.

Om du har många kolumner och du verkligen vill spara ansträngning kan du skapa klausulerna från dataordboken:

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

Klipp ut och klistra in resultatuppsättningen i en redigerare.

När du väl börjar på den här rutten är det lätt att bli mer sofistikerad:

 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;


  1. Oracle PL/SQL:Funktionsmarkör

  2. jQuery Validate Remote - Kontrollera om e-post redan finns

  3. Hur man analyserar databasindexens hälsa

  4. PostgreSQL- Filtrera ett datumintervall