日期:2014-05-17  浏览次数:20954 次

急急! oracle 使用游标循环 将多个id拼接成字符串 如下代码 调用function的时候 一直在执行,但没有显示结果 跪求答案

--同天、同机构、同类型 扣分 只扣一条
create or replace function get_lzkh_kfjfxq(sqls in varchar2,kfrq in varchar2)
RETURN varchar2 IS
Result varchar2(4000);--返回值
idstr varchar2(80);--接受游标遍历的id值的变量
--创建游标(只包含id的游标)
cursor cur_lzkh is
  select id
  from lzkh_kfjfxq
  where kfjfrq||jgm||kfjfms= sqls and kfjfrq=kfrq;--参数sqls 是 kfjfrq||jgm||kfjfms
begin
  Result :='';
  open cur_lzkh;
  --idstr赋值
  fetch cur_lzkh into idstr;
  --遍历游标
  WHILE cur_lzkh%FOUND LOOP
  --拼接id
  Result := Result || idstr || ',';
  end loop;
  --去掉最后一个逗号(,)
  Result :=substr(Result,1,LENGTH(Result)-1);
  close cur_lzkh;
 RETURN (Result);
end get_lzkh_kfjfxq;

------解决方案--------------------
引用:

--同天、同机构、同类型 扣分 只扣一条
create or replace function get_lzkh_kfjfxq(sqls in varchar2,kfrq in varchar2)
RETURN varchar2 IS
Result varchar2(4000);--返回值
idstr varchar2(80);--接受游标遍历的id值的变量
--创建游标(只包含id的游标)
cursor cur_lzkh is
  select id
  from lzkh_kfjfxq
  where kfjfrq
------解决方案--------------------
jgm
------解决方案--------------------
kfjfms= sqls and kfjfrq=kfrq;--参数sqls 是 kfjfrq
------解决方案--------------------
jgm
------解决方案--------------------
kfjfms
begin
  Result :='';
  open cur_lzkh;
  --idstr赋值
  fetch cur_lzkh into idstr;
  --遍历游标
  WHILE cur_lzkh%FOUND LOOP
  --拼接id
  Result := Result 
------解决方案--------------------
 idstr 
------解决方案--------------------
 ',';
  end loop;
  --去掉最后一个逗号(,)
  Result :=substr(Result,1,LENGTH(Result)-1);
  close cur_lzkh;
 RETURN (Result);
end get_lzkh_kfjfxq;

将循环处更改一下:
    LOOP
      fetch cur_lzkh into idstr;
      EXIT WHEN cur_lzkh%NOTFOUND;
      Result := Result 
------解决方案--------------------
 idstr 
------解决方案--------------------
 ',';
    END LOOP;
------解决方案--------------------
你这很多错了,改良下
create or replace function get_lzkh_kfjfxq(sqls in varchar2,
                                           kfrq in varchar2)
  RETURN varchar2 is