本帖最后由 buildxl 于 2012-05-21 18:06:17 编辑

解决方案 »

  1.   

    你看看这样不可行不行,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;
      

  2.   

    如果你的游标如果没有其他处理逻辑 好像没必要哦用游标取出值
    然后用exists 和你游标的sql进行判断吧
    直接去判读游标剩余的值  好像木有听过哦
      

  3.   

    我的思路就是 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,这个游标就停止了。
    谢谢
      

  4.   

    一般情况下都不用这个notfound来判断啊了,用for循环游标,游标打开关闭让系统自己去处理,要不然忘记关游标可不是件好事,就像你写java连接数据库一样,自己写jdbc 一会开,一会关,要是哪天发昏了,忘记关连接的,会出漏子的,一般情况下都是交给spring处理了要不然忘记关游标可不是件好事