create or repalce function selMineMonth(
p_date date date --到月 如:2003-02
)
return varchar2
is
v_temp1 varchar2(100);
v_temp2 varchar2(100);
cursor v_cursor is select distinct to_char(proddate,'yyyy-mm') from plantdayrep where to_char(proddate,'yyyy-mm')<=p_date;begin --没有begin怎么行? open v_cousor;
loop
fetch v_cursor into v_temp1;
exit when v_cursor%NOTFOUND
cursor t_cursor is select to_char(proddate,'yyyy-mm-dd') from plantdayrep where to_char(proddate,'yyyy-mm')=v_temp1;
--这个地方能行吗?这样做可以吗?这个地方如果不定义游标又怎么办呢?
--这个地方不行,游标必须先定义,我建议使用动态游标。
open cursor t_cursor;
loop
fetch t_cursor into v_temp2;
exit when t_cursor%NOTFOUND
--I want to deal data here end loop;
close t_cursor;end loop;
close v_cursor;end;
p_date date date --到月 如:2003-02
)
return varchar2
is
v_temp1 varchar2(100);
v_temp2 varchar2(100);
cursor v_cursor is select distinct to_char(proddate,'yyyy-mm') from plantdayrep where to_char(proddate,'yyyy-mm')<=p_date;begin --没有begin怎么行? open v_cousor;
loop
fetch v_cursor into v_temp1;
exit when v_cursor%NOTFOUND
cursor t_cursor is select to_char(proddate,'yyyy-mm-dd') from plantdayrep where to_char(proddate,'yyyy-mm')=v_temp1;
--这个地方能行吗?这样做可以吗?这个地方如果不定义游标又怎么办呢?
--这个地方不行,游标必须先定义,我建议使用动态游标。
open cursor t_cursor;
loop
fetch t_cursor into v_temp2;
exit when t_cursor%NOTFOUND
--I want to deal data here end loop;
close t_cursor;end loop;
close v_cursor;end;
解决方案 »
- 两个客户端
- 菜鸟问问题:这句sql怎么错了?
- oracle 我在导出想什么表、用户时总是出现“没有登录批处理权限”的权限错误?
- 我有个需求 请教老师帮忙 谢谢
- 急!oracle数据库驱动 1500字节问题
- alter database close的问题……9i
- 请教一条个人认为很难的sql语句写法(100分)
- 如何删除一个表中两个完全一样的数据(只删其中一条)
- 如果我的PL/SQL程序出现了异常怎么办?(在线等待,回答正确立即结贴)
- oracle 12g 怎么安装sample schema
- 我想把数据库中只要是某一字段相同的数据都删除,只保留一个,要怎么写呢
- 奖励100分(ORA-12571)
create or repalce function selMineMonth(
p_date date date --到月 如:2003-02 --建议使用string类型
)
return varchar2
is
v_temp1 varchar2(100);
v_temp2 varchar2(100);
type cur_type is ref cursor;
myCur cur_type;
cursor v_cursor is select distinct to_char(proddate,'yyyy-mm') from plantdayrep where to_char(proddate,'yyyy-mm')<=p_date;
begin
open v_cousor;
loop
fetch v_cursor into v_temp1;
exit when v_cursor%NOTFOUND
open myCur for select to_char(proddate,'yyyy-mm-dd') from plantdayrep where to_char(proddate,'yyyy-mm')='||v_temp1;
--这个地方能行吗?这样做可以吗?这个地方如果不定义游标又怎么办呢?
loop
fetch myCur into v_temp2;
exit when myCur%NOTFOUND
--do something;
end loop;
close myCur; end loop;
close v_cursor;end selMineMonth;
p_date date date --到月 如:2003-02
)
return varchar2
is
v_temp1 varchar2(100);
v_temp2 varchar2(100);
cursor v_cursor is select distinct to_char(proddate,'yyyy-mm') from plantdayrep where to_char(proddate,'yyyy-mm')<=p_date;
cursor t_cursor(in_yymm in varchar2) is select to_char(proddate,'yyyy-mm-dd') from plantdayrep where to_char(proddate,'yyyy-mm')=in_yymm;begin
open v_cousor;
loop
fetch v_cursor into v_temp1;
exit when v_cursor%NOTFOUND
open t_cursor(v_temp1);
loop
fetch t_cursor into v_temp2;
exit when t_cursor%NOTFOUND
--I want to deal data here end loop;
close t_cursor;
end loop;
close v_cursor;
end;
改为
if t_cursor%NOTFOUND then
-- 这时表明已经到了游标最后,v_temp2仍保留着最后一条记录的值。
....
exit;
end if;
这样就不会处理没有结果的情况。