本人刚入手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;
代码是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;
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里也就是最后一次的记录。可能是这个原因造成的吧。 第二个循环也是一样的情况