Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да поставя стойности по подразбиране за всяка колона в таблицата?

Не можем да направим това. Трябва да напишем всички колони и техните отделни 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция LAST_DAY() в Oracle

  2. Извикване на съхранена ПРОЦЕДУРА в Toad

  3. JPA + StoredProcedureCall + тип обект IN параметър

  4. преминаване през таблицата с данни, за да получите две конкретни стойности от всеки ред

  5. Инсталирането на Oracle Developer Tools 12 е неуспешно, твърдейки, че имам Windows XP. Имам Windows 7