Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Sprawdź, czy tabela istnieje, czy nie przed utworzeniem jej w Oracle

Jak skomentował również Rene, dość rzadko sprawdza się najpierw, a następnie tworzy tabelę. Jeśli chcesz mieć działający kod zgodnie z twoją metodą, będzie to:

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;

Ale wolałbym złapać wyjątek, oszczędzając niepotrzebnych linii kodu:

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. Zaokrąglanie do 2 miejsc po przecinku w SQL

  2. Wartości nie są wyświetlane z wiodącym zerem w Oracle

  3. Oświadczenie Oracle

  4. Jak włączyć śledzenie w aplikacjach Oracle r12

  5. Instalowanie RAC dla bazy danych z plikami danych