不太明白你的意思。你是不是将R2,R3,R4,R5等放在数组中进行调用呀?
如果这样应该可以的,只要动态指定回滚段即可。

解决方案 »

  1.   

    R2,R3,R4,R5是什么,是一个字串吗?如果是,使用instr和substr函数就可以分离出R2 R3 R4 R5.
      

  2.   

    R2,R3,R4,R5是一个前台传来的长串,用instr 和substr啥分离
         
          V_FldId := Pub.Split( I_FldStr , ',' ) ;
          V_ColCnt := V_FldId.COUNT ;      
          FOR V_Cntlzl IN 1..V_ColCnt LOOP   
             V_lzl1:=V_lzl(V_Cntlzl);
             htp.p(V_lzl1);
          END LOOP;
    V_LZL是我定义一个数组呀。
    I_FldStr是前台提交一个不定项的串,如R2,r3,r4,r5,也有可能是R2,R3,R4         V_lzl1:=V_lzl(V_Cntlzl);
             htp.p(V_lzl1);
    上面这句我是仿vbscript上写法,我知道是错?帮帮忙
      

  3.   

    declare
      TYPE temp_array IS ARRAY(20) OF VARCHAR2(10); --假设最多有20个元素
      temparray      temp_array;
      str varchar2(100) :='R1,R2,R3,R4';
      lastpos number(3);
      curpos  number(3);
      i       number(3) :=1;
    begin
      -- 数组初始化
      temparray := temp_array();
      temparray.Extend(20);  
      
      lastpos := 1;
      loop
        curpos := instr(str,',',lastpos,1);
        if curpos <> 0 then
          temparray(i) := trim(substr(str,lastpos,curpos - lastpos));
          DBMS_OUTPUT.PUT_LINE('element is: '||temparray(i));
          lastpos := curpos + 1;
        else
          temparray(i) := trim(substr(str,lastpos));
          DBMS_OUTPUT.PUT_LINE('element is: '||temparray(i));
          exit;
        end if;
        i := i + 1;
      end loop;
    end;
    /