Не можем да направим това. Трябва да напишем всички колони и техните отделни NVL() функции. Знам, че това изглежда като много усилия, но помислете какво би се случило, ако някоя от вашите колони е ДАТА или някакъв друг „екзотичен“ тип данни.
Ако имате много колони и наистина искате да спестите усилия, можете да генерирате клаузите от речника на данните:
select 'nvl('|| column_name || ', 0)'
from user_tab_columns
where table_name = 'STUDENT'
order by column_id;
Изрежете, поставете резултатния набор в редактор.
След като започнете по този маршрут, е лесно да станете по-сложни:
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;