select decode(max(Id),null,(select ids.currval from dual),max(Id)) id from users
这样提示此处不允许使用序号 要什么办法才能达到想要的效果呢?
这样提示此处不允许使用序号 要什么办法才能达到想要的效果呢?
解决方案 »
- 求推荐两本初学oracle的图书,以浅显易懂为准。谢谢!!!
- orical数据库导入时出现的错误
- 求一条sql语句!
- oracle灾难,这种情况oracle如何备份
- oracle10g被我整坏了, 高手帮我想想办法
- 整除?
- 不知道为什么查询结果不同啊!敬侯各位的回音!
- 我想取得数据表中第三到十行记录,请问SQL该怎么写(假设表名为Table1)?
- ora-12154 :TNS:监听进程不能解析在连接描述符中给出的SERVICE-NAME.高手们帮我看个问题!!!!!!!!!!!!!!!!
- oracle删除数据分区后数据文件如何释放?
- W7安装完oracle10g后,创建数据库,去提示对快捷方式下引用的项目权限不够!!!!安装中,我是修改了文件夹属性下的用户完全控制权限。
- 数据库自动备份代码如何写
--首先要确保你的序列能够取得当前值。取过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
因为你以前的查询可能结果有多条。所以数据库不知道你要显示哪一条出来。所以才会报错的。
select decode(max(Id),null,ids.currval,max(Id)) id from users
,(select ids.currval id from dual) t 在这边提示 此处不允许使用序号
--这样可以了吧
SELECT nvl(id,ids.currval) ID FROM (select max(Id) id from users)
-- 正解:当你新打开一个会话的时候,你是不能直接取某个序列 的当前值,除非你取过这个序列的 nextval !