2011-01-17 8 views
0

I Tabelle wie folgt erstellen möchten:Oracle Frage: execute sofort

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

mit diesem Verfahren, aber es funktioniert nicht. Kannst du mir helfen?

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

Vielen Dank im Voraus.

Antwort

10

Ich glaube, Sie so etwas wie

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

Aber natürlich eine andere interessante Frage ist, warum Sie eine dynamische Tabelle erstellt werden soll. Vielleicht kann ein global temporary table tun, was Sie brauchen?