Dat kunnen we niet. We moeten alle kolommen en hun individuele NVL()-functies typen. Ik weet dat dat veel moeite lijkt, maar bedenk wat er zou gebeuren als een van uw kolommen een DATE of een ander 'exotisch' gegevenstype is.
Als u veel kolommen heeft en u echt moeite wilt besparen, kunt u de clausules uit de datadictionary genereren:
select 'nvl('|| column_name || ', 0)'
from user_tab_columns
where table_name = 'STUDENT'
order by column_id;
Knip en plak de resultatenset in een editor.
Als je eenmaal op deze route bent begonnen, is het gemakkelijk om geavanceerder te worden:
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;