那会不会有第三次第四次...呢,如果该怎么样表达呢,是不是一直要嵌套下去呢?
我估计要通过一个表来记录拷贝的次数了。
  t1 (Value,Num);
然后根据列的值来进行判断,如果是第一次拷贝就是
  insert into t_copy1 select 'copy('||num||') of '||a1 
   from  table1,t1 where table1.a1=t1.value);
其他的也就是类似处理,可以用循环根据规则来进行处理!

解决方案 »

  1.   

    是一直循环下去。也不用table来记录num次数的。但是num值怎么去确定呀,我就是想知道num值怎么取得。
      

  2.   

    看不大懂你的要求,假定你需要一个过程来处理copy,参数为
    1、字段名a1,表的主键,用于定位一条纪录
    2、copy次数
    create or replace procedure copy_records (p_a1 varchar2, p_numofcopies number) is
       cursor c_t1 is
          select a1, a2, a3
            from t1
           where a1 = p_a1;
    begin
       for i in 1 .. c_numofcopies loop
          for c in c_t1 loop
             insert into t1
                         (a1, a2, a3
                         )
                  values ('copy' || decode (i, 1, '', '(' || i || ')') || ' of ' || c.a1, c.a2, c.a3
                         );
          end loop;
       end loop;
    end;
    /