本人刚入手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;
解决方案 »
- 视图查询结果
- MySQL 5.5 Command Line Client 窗口一输密码就退出
- 100分求解一道Oracle面试题
- 关于ipm-00010产生的原因
- 8i的dba studio 进不去了,怎样解决?
- 急!难!如何收集以下数据库信息?在线等待,结帖马上给分!
- 狂晕,300分,为什么改变条件的顺序会影响查询结果???
- 在oracle8.1.7中如何跟踪数据的sql查询,象sql server 的sql tracer那样的
- 我连到oracle sql*plus的时候报错,错误是。。。
- oracle 想锁定一行,为什么在sql plus中执行for update 就没有反应?在cmd中执行就可以执行,也可以锁住该行
- 查看游标的表v$open_curcor提示不存在该视图或表格
- oracle查询效率:一次查询100万条记录 VS 100万次查询,每次查一条记录
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里也就是最后一次的记录。可能是这个原因造成的吧。 第二个循环也是一样的情况