Oracle问题:立即执行

use*_*332 0 sql oracle plsql oracle10g

我想创建这样的表:

create table ttt
(
   col1 varchar2(2),
   col2 varchar2(2),
   col3 varchar2(2),
   col4 varchar2(2),
   col5 varchar2(2)
);
Run Code Online (Sandbox Code Playgroud)

使用此过程,但它不起作用.你能救我吗?

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;
/
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Ren*_*ger 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;
/
Run Code Online (Sandbox Code Playgroud)

但是,当然,另一个有趣的问题是为什么要创建动态表.也许一个global temporary table可以做你需要的东西?