sql >> Database teknologi >  >> RDS >> Oracle

Opret eller erstat tabel i Oracle pl/sql

Du burde virkelig ikke gøre dette i PL/SQL, tabeller oprettet under kørsel ville være tegn på en fejl i din datamodel. Hvis du virkelig er overbevist om, at du absolut skal gøre dette, så undersøg midlertidige tabeller først. Personligt ville jeg revurdere, om det overhovedet er nødvendigt.

Du ser ud til at gå efter EAFP i modsætning til LBYL tilgang, som er beskrevet i nogle få svar på dette spørgsmål . Jeg vil påstå, at dette er unødvendigt. En tabel er et ret statisk dyr, du kan bruge systemvisningen USER_TABLER for at afgøre, om det eksisterer, før du dropper det.

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. Sådan rettes com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Ingen handlinger tilladt efter forbindelsen er lukket. undtagelse?

  2. MySQL tilføjer felter til en Enum

  3. Kan ikke starte MySQL-server - Kontrolproces afsluttet med fejlkode

  4. MySQL WHERE Dato> 15 dage