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

Проверете дали таблицата съществува или не, преди да я създадете в Oracle

Както Рене също коментира, доста необичайно е първо да проверите и след това да създадете таблицата. Ако искате да имате работещ код според вашия метод, това ще бъде:

declare
nCount NUMBER;
v_sql LONG;

begin
SELECT count(*) into nCount FROM dba_tables where table_name = 'EMPLOYEE';
IF(nCount <= 0)
THEN
v_sql:='
create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)';
execute immediate v_sql;

END IF;
end;

Но предпочитам да хвана изключението, спестява ви някои ненужни реда код:

declare
v_sql LONG;
begin

v_sql:='create table EMPLOYEE
  (
  ID NUMBER(3),
  NAME VARCHAR2(30) NOT NULL
  )';
execute immediate v_sql;

EXCEPTION
    WHEN OTHERS THEN
      IF SQLCODE = -955 THEN
        NULL; -- suppresses ORA-00955 exception
      ELSE
         RAISE;
      END IF;
END; 
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Статичен срещу динамичен sql

  2. HikariCP:Какви изчаквания на ниво база данни трябва да се имат предвид, за да се зададе maxLifetime за Oracle 11g

  3. Oracle SQL - REGEXP_LIKE съдържа знаци, различни от a-z или A-Z

  4. Бавна миграция към облак

  5. Създаване на тригер, който да се изпълнява само когато се създава нова таблица