使用数组变量创建多个表

时间:2014-02-04 11:00:38

标签: sql arrays oracle loops create-table

这是问题所在。

我从表中读取年份数字并将其插入另一个表格中(现在是静态但在最终临时表中)

然后我查看这些数字并用它们创建表格。

BEGIN 
 INSERT INTO temp_year
  ( year_column )
  ( 
    select extract(year from datum) from datetest
  ); 

FOR counter_id IN ( SELECT * FROM temp_year )
LOOP  
      EXECUTE IMMEDIATE 'Create table YEAR_' || counter_id || ' (year int, name char(50))'        
END LOOP; 
END; 
/

Temp_year有一个列year_column(int)(填充像2012) datatest有一个日期列,其值为10.02.2012

结果应该是名为YEAR_2012的表,其中列为year int,name为char(50)

然而这不起作用。即使在temp_year表中存在多年,我也会在执行立即部分退出。

任何想法?

提前致谢。

THeVagabond

1 个答案:

答案 0 :(得分:1)

试试这个:

EXECUTE IMMEDIATE 'Create table YEAR_' || counter_id.year_column || ' (year integer, name varchar2(50))';

(最后不要错过分号)