如何 判断 游标取出来的值,减去1,是否还在游标当中

buildxl 2012-05-21 05:13:05
请问这个如果写

在function 中 游标取出来的是 一组(第一列 倒序)数据
如:
year id
2012,aaa
2011,bbb
2010,ccc
2008,hhh
2007,xxx

取连续的数据当中,最小的那个值对应的id,这个 正确的结果是:2010,id3


通过游标,2012-1 =2011 有值,就 判断2011
如果2011-1 =2010 在游标中存在,就继续。
如果2010-1 =2009 在游标中不存在,就返回2010 对应的那个ccc。到此结束,以后,就不执行了
...全文
161 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
buildxl 2012-05-23
  • 打赏
  • 举报
回复
我的思路就是 wuhaitoapual类似的。(就是没放在包里执行)

create or replace function tb1_desc return number is
cursor v_cur is select * from tb1 order by year desc;
v_year number;
begin
for cur_col in v_cur loop
select count(*) into v_year from tb1 where tb1.year=cur_col.year-1;
if v_year = 0 then
return cur_col.year;
end if;
end loop;
end;

但是有几个问题我没搞定

1.如果游标为空的,我怎么返回值,不然报错的

2.有个疑问 if v_year = 0,有返回值,那v_year>0 ,这个要不要处理?
还是说if v_year = 0,这个游标就停止了。


谢谢
Northgale 2012-05-23
  • 打赏
  • 举报
回复
一般情况下都不用这个notfound来判断啊了,用for循环游标,游标打开关闭让系统自己去处理,要不然忘记关游标可不是件好事,就像你写java连接数据库一样,自己写jdbc 一会开,一会关,要是哪天发昏了,忘记关连接的,会出漏子的,一般情况下都是交给spring处理了要不然忘记关游标可不是件好事
kingkingzhu 2012-05-23
  • 打赏
  • 举报
回复
游标有自己的判断啊notfound
kingkingzhu 2012-05-21
  • 打赏
  • 举报
回复
如果你的游标如果没有其他处理逻辑 好像没必要哦

用游标取出值
然后用exists 和你游标的sql进行判断吧
直接去判读游标剩余的值 好像木有听过哦
wuhaitoapual 2012-05-21
  • 打赏
  • 举报
回复
你看看这样不可行不行,tb1表包含year和id两个字段
create or replace function tb1_desc return number is
cursor v_cur is select * from tb1 order by year desc;
v_year number;
begin
for cur_col in v_cur loop
select count(*) into v_year from tb1 where tb1.year=cur_col.year-1;
if v_year = 0 then
return cur_col.year;
end if;
end loop;
end tb1_desc;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧