Копировать таблицу с дополнительным столбцом - PullRequest
0 голосов
/ 29 октября 2011

Как написать PL/SQL процедуру, которая:

  • Копирует таблицу по имени в другую таблицу по имени (не существует)
  • Добавляет во вторую таблицуновый столбец ts, заполненный текущей меткой времени / datetime

1 Ответ

5 голосов
/ 29 октября 2011

Для этого вам нужно использовать динамический SQL.

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;
...