2011-01-17 4 views
0

Я хочу создать таблицу, как это:Oracle вопрос: выполнить немедленное

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

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

ответ

10

Я считаю, что вы хотите что-то вроде

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 может делать то, что вам нужно?

Смежные вопросы