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

Как да проверите дали колона съществува, преди да я добавите към съществуваща таблица в PL/SQL?

Всички метаданни за колоните в Oracle Database са достъпни чрез един от следните изгледи.

user_tab_cols; -- За всички таблици, собственост на потребителя

all_tab_cols; -- За всички таблици, достъпни за потребителя

dba_tab_cols; -- За всички таблици в базата данни.

Така че, ако търсите колона като ADD_TMS в таблицата SCOTT.EMP и добавяте колоната само ако не съществува, PL/SQL кодът ще бъде по тези редове..

DECLARE
  v_column_exists number := 0;  
BEGIN
  Select count(*) into v_column_exists
    from user_tab_cols
    where upper(column_name) = 'ADD_TMS'
      and upper(table_name) = 'EMP';
      --and owner = 'SCOTT --*might be required if you are using all/dba views

  if (v_column_exists = 0) then
      execute immediate 'alter table emp add (ADD_TMS date)';
  end if;
end;
/

Ако планирате да стартирате това като скрипт (не част от процедура), най-лесният начин би бил да включите командата alter в скрипта и да видите грешките в края на скрипта, като приемем, че нямате начало-край за сценария..

Ако имате file1.sql

alter table t1 add col1 date;
alter table t1 add col2 date;
alter table t1 add col3 date;

И col2 присъства, когато скриптът се стартира, другите две колони ще бъдат добавени към таблицата и регистрационният файл ще покаже грешката, която казва, че „col2“ вече съществува, така че трябва да сте добре.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате редове в колона в таблицата на Oracle

  2. Топ 30 най-полезни заявки за едновременен мениджър

  3. java.lang.ClassCastException:oracle.sql.TIMESTAMP не може да бъде прехвърлен към java.sql.Timestamp

  4. Регистрация на изходни параметри на функция/процедура на Groovy SQL Oracle

  5. Едноредови функции в Oracle sql