一:
v_day EMP.day%TYPE := XXXXXXXXXXXXXXX;
如果想赋值 在一个时间范围内 比如说:between '2000-12-02' and '2004-12-30'
具体应该怎么写二,exit when rec%notfound; 跳出循环,
但是我写完一段查询代码,结果是死循环,SQL语句测试过没问题,可以查处时间范围内23条记录
但是存储过程写完
fetch rec
into v_orgidt,v_actnam,v_upddat,v_clsdat;
exit when rec%notfound;
dbms_output.put_line(v_orgidt||v_actnam||v_upddat||v_clsdat);
测试的时候一直就死循环了,不明白问题出在哪了 其中变量每循环一次都有值。麻烦前辈讲解。
v_day EMP.day%TYPE := XXXXXXXXXXXXXXX;
如果想赋值 在一个时间范围内 比如说:between '2000-12-02' and '2004-12-30'
具体应该怎么写二,exit when rec%notfound; 跳出循环,
但是我写完一段查询代码,结果是死循环,SQL语句测试过没问题,可以查处时间范围内23条记录
但是存储过程写完
fetch rec
into v_orgidt,v_actnam,v_upddat,v_clsdat;
exit when rec%notfound;
dbms_output.put_line(v_orgidt||v_actnam||v_upddat||v_clsdat);
测试的时候一直就死循环了,不明白问题出在哪了 其中变量每循环一次都有值。麻烦前辈讲解。
第二个你的检索数据有多少条?看你的语法没问题!
要不你换一种写法:
WHILE c_info%FOUND LOOP
dbms_output.put_line(v_orgidt ¦ ¦v_actnam ¦ ¦v_upddat ¦ ¦v_clsdat);
FETCH REC INTO ...
END LOOP;
除非你用字符型的
我去试试啊 谢谢回二楼
DAY是 varchar2类型的 我主要不知道怎么写 能把代码发出来参考一下么?
谢谢啊 我去试试回2楼
DAY 是 VARCHAR2类型的 具体怎么写能发代码出来参考下么?
for r in rec
loop
dbms_output.put_line(r.orgidt||r.actnam||r.upddat||r.clsdat);
end loop;
不用open,close什么的了
一般用fetch的时候要先打开游标的,最后再关闭的,或许就是缺了这步才会死循环的吧
cursor rec is
select orgidt,actnam,upddat,clsdat
from actdat
where clsdat
between '2000-12-02' and '2004-12-30'; --类似这样。第二个还是有些问题,我再试试 呵呵米办法 初学者 总是碰到问题。
2.贴完整代码
v_msg1 out varchar2
) return integer is
v_orgidt actdat.orgidt%TYPE;
v_actnam actdat.actnam%TYPE;
v_upddat actdat.upddat%TYPE;
v_clsdat actdat.clsdat%TYPE;
cursor rec is
select orgidt,actnam,upddat,clsdat
from actdat
where clsdat
between to_char(to_date('20001202' , 'yyyymmdd'),'yyyy-mm-dd')
and to_char(to_date('20041230' , 'yyyymmdd'),'yyyy-mm-dd');--SQL语句测试通过
begin
open rec;
loop
fetch rec
into v_orgidt,v_actnam,v_upddat,v_clsdat;
exit when rec%notfound;
dbms_output.put_line(v_orgidt||v_actnam||v_upddat||v_clsdat);
end loop;
return 0;
close rec;
exception
when others then begin
rollback;
v_msg1 := sqlerrm;
dbms_output.put_line('v_msg='||v_msg1);
return 0;
end;
end q_actdat2;
end;
end q_actdat2;
很有可能 select orgidt,actnam,upddat,clsdat
from actdat
where clsdat
between to_char(to_date('20001202' , 'yyyymmdd'),'yyyy-mm-dd')
and to_char(to_date('20041230' , 'yyyymmdd'),'yyyy-mm-dd');
出现在这里
回hautrun
这个end; 是对应 when others then begin
编译没问题 就是死循环,跳不出去。