如何返回当前id值,sql该怎么写呢?

zdnetchina 2005-09-19 09:34:20
表a有个主键id

id通过序列来递增

CREATE SEQUENCE SafeResult_sequence
INCREMENT BY 1  -- 每次加几个
START WITH 1   -- 从1开始计数
NOMAXVALUE    -- 不设置最大值
NOCYCLE     -- 一直累加,不循环
CACHE 10;

当我插入一条记录并返回它的id,sql该怎么写呢?
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
沝林 2005-09-20
  • 打赏
  • 举报
回复
执行 select SafeResafsult_sequence.currval from dual;

ORA-02289: 序列(号)不存在
__________________________________________

执行这个语句要在取到nextval之后进行,也就是insert之后

SQL> select linenum.currval from dual;
select linenum.currval from dual
*
ERROR 位于第 1 行:
ORA-08002: 序列LINENUM.CURRVAL 尚未在此进程中定义


SQL> select linenum.nextval from dual;

NEXTVAL
----------
10001

SQL> select linenum.currval from dual;

CURRVAL
----------
10001
zdnetchina 2005-09-20
  • 打赏
  • 举报
回复
执行 select SafeResafsult_sequence.currval from dual;

ORA-02289: 序列(号)不存在


沝林 2005-09-20
  • 打赏
  • 举报
回复
insert into a(id,field1...) values(SafeResult_sequence.nextval,12...)
returning id into pnum;
----------------------------------------------
pnum是你在pl/sql中定义的变量,id 就放在这个变量里啊
zdnetchina 2005-09-20
  • 打赏
  • 举报
回复
to: duanzilin(寻)

insert into a(id,field1...) values(SafeResult_sequence.nextval,12...)
returning id into pnum;
----------------------------------------

returning id into pnum; pnum是什么?id写到什么地方去了.

执行后出现 ORA-00905: 缺少关键字
沝林 2005-09-19
  • 打赏
  • 举报
回复
1.select SafeResult_sequence.currval from dual;

2.也可以用
insert into a(id,field1...) values(SafeResult_sequence.nextval,12...)
returning id into pnum;
sasacat 2005-09-19
  • 打赏
  • 举报
回复

insert into t(id,name,...) values(seq1.nextval,....) return id into v_id;
然后以v_id 查询即可:
select * from t where id=v_id;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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