本人刚入手oracle  现在碰到一个问题,现在做一个存储过程,里面需要经过三次查询  可最后返回的结果只是第二次查询的最后一条记录的结果
代码是package body里面的 求教里面的错误,或者给予正确的解答 谢谢!
procedure get_icd_one_info(fst in varchar2, emp_no out cur_out,emp out cur_emp ,emps out cur_emps)
is
type_id integer;
thid varchar2(300);
begin  open emp_no for
            select type_no into type_id
            from disease_type a
            where a.type_name=fst;            loop
            fetch emp_no into type_id;
            exit when emp_no%notfound;            open emp for
            select begin_code
            from disease_type b
            where b.pre_parent_type_id=type_id;
            end loop;
            close emp_no;
            loop
            fetch emp into thid;
            exit when emp%notfound;            open emps for
            select icd_code,ch_disease_name,en_disease_name
            from disease
            where icd_code like '%'|| thid||'%';
            end loop;
            close emp;            end get_icd_one_info;

解决方案 »

  1.   

    procedure get_icd_one_info(fst in varchar2, emp_no out cur_out,emp out cur_emp ,emps out cur_emps)
    is
    type_id integer;
    thid varchar2(300);
    begin open emp_no for
      select type_no into type_id
      from disease_type a
      where a.type_name=fst;  loop
      fetch emp_no into type_id;
      exit when emp_no%notfound;
      open emp for
      select begin_code
      from disease_type b
      where b.pre_parent_type_id=type_id;

      end loop;
      close emp_no;
      loop
      fetch emp into thid;
      exit when emp%notfound;  open emps for
      select icd_code,ch_disease_name,en_disease_name
      from disease
      where icd_code like '%'|| thid||'%';
      end loop;
      close emp;  end get_icd_one_info;打开游标的时候不用into ,虽然没说错,但是没啥用。
    看循环里面,循环一次就给打开一次emp,也就是给游标emp赋一个新值,最后循环完了,emp里也就是最后一次的记录。可能是这个原因造成的吧。    第二个循环也是一样的情况