Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como colocar valores padrão para cada coluna na tabela?


Não podemos fazer isso. Precisamos digitar todas as colunas e suas funções NVL() individuais. Eu sei que parece um grande esforço, mas considere o que aconteceria se alguma de suas colunas fosse um DATE ou algum outro tipo de dados "exótico".

Se você tiver muitas colunas e realmente quiser economizar esforço, poderá gerar as cláusulas do dicionário de dados:
 select 'nvl('|| column_name || ', 0)' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;

Recorte e cole o conjunto de resultados em um editor.

Uma vez que você começa nesta rota, é fácil ficar mais sofisticado:
 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;