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

Utwórz lub zamień tabelę w Oracle pl/sql

Naprawdę nie powinieneś tego robić w PL/SQL, tabele utworzone w czasie wykonywania mogą wskazywać na błąd w Twoim modelu danych. Jeśli naprawdę jesteś przekonany, że absolutnie musisz to zrobić, zbadaj tabele tymczasowe pierwszy. Osobiście oceniłbym ponownie, czy w ogóle jest to konieczne.

Wygląda na to, że wybierasz EAFP zamiast LBYL podejście, które jest opisane w kilku odpowiedziach na to pytanie . Twierdzę, że to niepotrzebne. Stół to dość statyczna bestia, możesz użyć widoku systemowego TABELI_UŻYTKOWNIKÓW aby ustalić, czy istnieje, zanim go porzucisz.

declare

   l_ct number;

begin

   -- Determine if the table exists.
   select count(*) into l_ct
     from user_tables
    where table_name = 'THE_TABLE';

   -- Drop the table if it exists.
   if l_ct = 1 then
      execute immediate 'drop table the_table';
   end if;

   -- Create the new table it either didn-t exist or
   -- has been dropped so any exceptions are exceptional.
   execute immediate 'create table the_table ( ... )';

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. Tworzenie wyzwalacza, który będzie uruchamiany tylko wtedy, gdy tworzona jest nowa tabela

  2. Utwórz wiodące zero w Oracle

  3. Jak wstawić znacznik czasu w Oracle?

  4. Przykładowe schematy na GitHub

  5. Wydajna konwersja OracleDecimal na .NET dziesiętna z obcięciem