2011-01-17 9 views
0

Je veux créer la table comme ceci:question Oracle: execute immédiate

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

avec cette procédure, mais il ne fonctionne pas. Pouvez-vous m'aider?

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

Merci d'avance.

Répondre

10

Je crois que vous voulez quelque chose comme

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

Mais bien sûr, une autre question intéressante est la raison pour laquelle vous souhaitez créer une table dynamique. Peut-être un global temporary table peut-il faire ce dont vous avez besoin?