sql >> Databasteknik >  >> RDS >> Oracle

Skapa eller ersätt tabell i Oracle pl/sql

Du borde verkligen inte göra detta i PL/SQL, tabeller som skapas vid körning skulle tyda på ett fel i din datamodell. Om du verkligen är övertygad om att du absolut måste göra detta så undersök tillfälliga tabeller först. Personligen skulle jag omvärdera om det överhuvudtaget är nödvändigt.

Du verkar gå för EAFP i motsats till LBYL tillvägagångssätt, som beskrivs i några svar på denna fråga . Jag skulle hävda att detta är onödigt. En tabell är en ganska statisk best, du kan använda systemvyn USER_TABLER för att avgöra om det finns innan du släpper 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. SQL-fråga med flera fall hämta en rad som flera kolumner

  2. Returvärde cross join

  3. Finns det någon arraydatatyp i MySQL som i PostgreSQL?

  4. Android-fel:Värde <br av typen java.lang.String kan inte konverteras till JSONObject