楼主的意思不是很理解:
数据来源表为 tab_101_0505 是指:select  from tab_101_0505;
但是每次插入的是10个表的数据,即tab_101_0505,tab_102_0505,tab_103_0505 ...tab_109_0505
再插回来吗?

解决方案 »

  1.   

    不是"再插回来"
    应该是:
    2005年5月20日的时候,数据来源表为 tab_101_0505,tab_102_0505....tab_101_0505
    2005年6月20日的时候,数据来源表为 tab_101_0506,tab_102_0506...tab_109_0506
    每次都是从9个表中(上面贴子的10个是笔误)取数据,往tab_1里插
      

  2.   

    create function inser(aa varchar2)
    is
    num number;
    begin
    execute immediate 'select count(*) from '||aa||' where to_char(col,'''mmdd'')='substr(aa,9,4) into num;
    insert into tab1 values('2005'||substr(aa,9,2),substr(aa,5,3),num);
    commit;
    end;create produce 中建立一个循环将表的名字拼出来
    inser(str)来执行以上程序没有测试 希望对楼主有所帮助
      

  3.   

    Create Procedure p_insert_tab_by_month(
    pc_date char  --输入参数,月份,如“200506”
    )
    Is
    v_sqlstr varchar2(4000);
    v_tbl_name varchar2(30);
    i number;
    Begin
    v_sqlstr:='truncate table tab_1';
    execute immediate v_sqlstr; For i In 1 .. 9 Loop
    v_tbl_name:='tab_10'||i||'_'||substr(pc_date,3,4);
    v_sqlstr:='Insert Into tab_1
    select '||pc_date||',''10'||i||''',count(*) from '||v_tbl_name;
    execute immediate v_sqlstr;
    commit;
    End Loop;
    End p_insert_tab_by_month;随便写的,没测试,楼住可参考。
      

  4.   

    如果要订时跑的话就建个JOB就可以了。
      

  5.   

    谢谢 heyixiang(子豚の愛人) 
    还在研究中..