Вопрос Oracle: выполнить немедленно - PullRequest
0 голосов
/ 17 января 2011

Я хочу создать таблицу следующим образом:

create table ttt
(
   col1 varchar2(2),
   col2 varchar2(2),
   col3 varchar2(2),
   col4 varchar2(2),
   col5 varchar2(2)
);

с этой процедурой, но она не работает. Можете ли вы помочь мне?

declare
  str varchar2(200);
  i int;
begin
  for i in 1 .. 5 loop
  begin
    str:=’str’||i||”;
  end;
  end loop;
  execute immediate ‘create table t1 (“str” varchar2(2) )’;
end;
/

Заранее спасибо.

1 Ответ

10 голосов
/ 17 января 2011

Полагаю, вы хотите что-то вроде

declare
  str varchar2(200);
  i int;
begin
  for i in 1 .. 5 loop

    str:= str || 'col' || i || ' varchar2(2)';
    if i < 5 then
       str := str || ',';
    end if;

  end loop;
  execute immediate 'create table t1 (' || str || ')';
end;
/

Но, конечно, еще один интересный вопрос - зачем вам создавать динамическую таблицу.Может быть global temporary table может делать то, что вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...