select decode(max(Id),null,(select ids.currval from dual),max(Id)) id from users
这样提示此处不允许使用序号 要什么办法才能达到想要的效果呢?

解决方案 »

  1.   


    --首先要确保你的序列能够取得当前值。取过ids.nextval
    select decode(max(u.id),null,t.id,max(u.id))  id_col
    from users u,(select ids.currval id from dual) t
      

  2.   

    select decode(max(Id),null,(select ids.currval from dual where rownum =1),max(Id)) id from users
    因为你以前的查询可能结果有多条。所以数据库不知道你要显示哪一条出来。所以才会报错的。
      

  3.   


    select decode(max(Id),null,ids.currval,max(Id)) id from users
      

  4.   

    值是能取到的  
    ,(select ids.currval id from dual) t  在这边提示 此处不允许使用序号
      

  5.   


    --这样可以了吧
    SELECT nvl(id,ids.currval) ID FROM (select max(Id) id from users)
      

  6.   


    -- 正解:当你新打开一个会话的时候,你是不能直接取某个序列 的当前值,除非你取过这个序列的 nextval !
      

  7.   

    select decode(max(Id),null,ids.currval,max(Id)) id from users