2011-10-29 5 views
0

supplémentaire Comment écrire une procédure PL/SQL que:Copier le tableau avec colonne

  • Copie une table donnée par son nom dans une autre table donnée par nom (non existant)
  • ajoute à la deuxième table une nouvelle colonne ts rempli avec un horodatage/datetime en cours

Répondre

5

Vous aurez besoin d'utiliser SQL dynamique pour y parvenir.

create or replace procedure clone_table 
    (p_copy_table in varchar2 
     , p_new_table in varchar2 
     , p_inc_data in varchar2 := 'Y') 
is 
    stmt varchar2(32767); 
begin 
    stmt := 'create table '|| p_new_table 
       || ' as select t.*, systimestamp as ts ' 
       || ' from ' || p_copy_table || ' t'; 
    if p_inc_data != 'Y' then 
     -- use a empty resultset to create an empty table 
     stmt := stmt || ' where 1=0'; 
    end if; 
    execute immediate stmt; 
end; 
Questions connexes