如何用一条语句得到刚刚插入的序列 就像mssql中的select @@identity

weiang_1983 2009-08-04 02:10:45
有一张user表 字段 id,name
序列user_seq

求一条语句,在.net中得到刚刚插入的序列值

insert into user(id,name)values(user_seq.nextval,'test')
.....


就像mssql中自增字段:
insert into user(name)values('test') select @@identity
...全文
150 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
majy 2009-08-04
  • 打赏
  • 举报
回复
兄弟,系统可不是你一个人用的
majy 2009-08-04
  • 打赏
  • 举报
回复
select user_seq.curval from dual;取序列的当前值

狂汗,如果在这条语句运行之前,已经有很多语句插入了呢,回来的不知道是什么值了
cosio 2009-08-04
  • 打赏
  • 举报
回复
select user_seq.currval from dual;取序列的当前值 --少了r
cosio 2009-08-04
  • 打赏
  • 举报
回复
楼上,当然可以了!
select user_seq.nextval from dual;取序列的下一个值
select user_seq.curval from dual;取序列的当前值

majy 2009-08-04
  • 打赏
  • 举报
回复
4楼的兄弟,你的变量能返回java程序或者.net程序啊???!!!!
weiang_1983 2009-08-04
  • 打赏
  • 举报
回复
靠,太长了吧
oracledbalgtu 2009-08-04
  • 打赏
  • 举报
回复
create sequence seq_1;
create table test(a int,b varchar2(100));
declare
v_a int;
v_b varchar2(100);
begin
insert into test
values
(seq_1.nextval, 'abc')
returning a, b into v_a,v_b;
dbms_output.put_line('a=' || v_a || ',' || 'b=' || v_b);
end;
/
--输出:a=1,b=abc
drop sequence seq_1;
drop table test;
[Quote=引用楼主 weiang_1983 的回复:]
有一张user表  字段 id,name
序列user_seq

求一条语句,在.net中得到刚刚插入的序列值

insert into user(id,name)values(user_seq.nextval,'test')
.....


就像mssql中自增字段:
insert into user(name)values('test') select @@identity
[/Quote]
shiyiwan 2009-08-04
  • 打赏
  • 举报
回复
或者select max(id)
majy 2009-08-04
  • 打赏
  • 举报
回复
当然,你可以通过存储过程来实现一次性insert和得到序列值
majy 2009-08-04
  • 打赏
  • 举报
回复
在oracle中是不可能的,你要做的就是:程序中,先把value值得到,然后写到sql语句中,然后执行insert。

17,086

社区成员

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

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