begin--获取所有接收人GUID
         SELECT * INTO V_DEALERGUID  from table(FT_SPLIT(V_WORKORDERCYCLE.F_DEALER_IDS,','));
end说明:这是我在存储过程begin end模块中加的代码 ,我想把一个字符串(V_WORKORDERCYCLE.F_DEALER_IDS loop里面循环获取的,这是一个很长的GUIDS字符串)Split掉,然后想获取这个集合里面的所有数据,然后进行循环insert到一张表。我想问的是:查询结果放到V_DEALERGUIDS 里面,这个 V_DEALERGUIDS 变量怎么申明,怎么循环这个集合,小弟是第一次接触这些东西,请各位大哥多多帮助下,谢谢了

解决方案 »

  1.   

    用游标,很简单,给你例子。PROCEDURE find_staff
    is  -- 声明一个游标,查询表
      CURSOR c1 IS
      SELECT empno, ename FROM emp ;
    BEGIN
      --游标循环,通过ee变量获取记录的,如ee.empno,ee.ename
      FOR ee IN c1 LOOP
      --循环调用insert into 。  
         insert into ttt values(ee.empno,ee.ename);
      END LOOP;
      COMMIT;
    END;
      

  2.   

    游标可以传参数的。如
    CURSOR c1(name) IS
    SELECT empno, ename FROM emp where ename=name使用时,传入参数,如
    FOR ee IN c1('hh') LOOP
      

  3.   

    JUST LIKE THIS。
    TYPE fieldType IS TABLE OF VARCHAR2(500) INDEX BY BINARY_INTEGER;
      V_DEALERGUID fieldType;
    begin--获取所有接收人GUID
      SELECT * BULK COLLECT INTO V_DEALERGUID from table(FT_SPLIT(V_WORKORDERCYCLE.F_DEALER_IDS,','));
    end;