首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

存储过程Split的有关问题

2012-12-17 
存储过程Split的问题begin--获取所有接收人GUIDSELECT * INTO V_DEALERGUIDfrom table(FT_SPLIT(V_WORKORD

存储过程Split的问题
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 变量怎么申明,怎么循环这个集合,小弟是第一次接触这些东西,请各位大哥多多帮助下,谢谢了
[最优解释]
用游标,很简单,给你例子。

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;
[其他解释]
游标可以传参数的。如
CURSOR c1(name) IS
SELECT empno, ename FROM emp where ename=name

使用时,传入参数,如
FOR ee IN c1('hh') LOOP
[其他解释]

引用:
begin

--获取所有接收人GUID
  SELECT * INTO V_DEALERGUID from table(FT_SPLIT(V_WORKORDERCYCLE.F_DEALER_IDS,','));
end

说明:这是我在存储过程begin end模块中加的代码 ,我想把一个字符串(V_WORKORDERCYCLE.F_DEALER_IDS loop里面循环获取的,这是……

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;


[其他解释]
引用:
用游标,很简单,给你例子。

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……
 我用游标 我怎么把我那个字符串参数传进去?

热点排行