用ADO.NET在Oracle表中插入记录后如何返回自增主键值?

firmbird 2004-04-22 12:03:03
用ADO.NET在Oracle表中插入记录后如何返回自增主键值?
...全文
394 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
strpinelin 2004-07-10
  • 打赏
  • 举报
回复
在Oracle中有一个数据类型UROWID,把变量定义为UROWID应该就可以了。
wangsaokui 2004-04-26
  • 打赏
  • 举报
回复
I don't know how to get identity in Oracle database, gz!
wind2moon 2004-04-23
  • 打赏
  • 举报
回复
我也遇到过同样的问题,只是数据库系统并没有提供这样的系统变量。我的解决办法是:
(1)在数据表中增加一个时间域,
(2)插入记录前先用一个变量保存当前系统时间;
(3)插入记录
(4)查询该数据表,查询条件为该时间域。

(timestamp的单位是百分之三秒)
sy246 2004-04-23
  • 打赏
  • 举报
回复
你用select sequence.nextval from dual不是能得到主健吗!
firmbird 2004-04-23
  • 打赏
  • 举报
回复
主键的值是在插入触发器中调用sequence.nextval来添加的,而不是自己调用select sequence.nextval from dual获值后加入到表中的,
wolftop 2004-04-23
  • 打赏
  • 举报
回复
up~!UP~!
morefish 2004-04-22
  • 打赏
  • 举报
回复
要不用存储过程返回参数吧。
firmbird 2004-04-22
  • 打赏
  • 举报
回复
拜托,各个给个例子,不要钓胃口啊,分不够可以开帖再送,
sequence.currval要在用了sequence.nextval之后才有效,就是说在insert之后就调用sequence.currval值,不能分开执行,另外sequence的值不能用在where子句中。各位帮我想想办法吧
hfwang009 2004-04-22
  • 打赏
  • 举报
回复
secquence是可以,而且速度快
如果不会的话还可以用程序实现。select . update.
firmbird 2004-04-22
  • 打赏
  • 举报
回复
能给个例子吗?我试过用序列,不过不知道怎么写
sy246 2004-04-22
  • 打赏
  • 举报
回复
可以用用序列!
zhpsam109 2004-04-22
  • 打赏
  • 举报
回复
使用select 序列.nextval from dual;
firmbird 2004-04-22
  • 打赏
  • 举报
回复
up
firmbird 2004-04-22
  • 打赏
  • 举报
回复
不行,返回主键值必须在插入语句之后立即执行,要不然就可能会有其他用户更新主键值,哪就不对了
在SQL Server中可以这样实例
OleDbCommand command=new OleDbCommand();
command.Connection=connection;
command.CommandText="Insert Into tablename(col1,col2) values(val1,val2); select * from tablename where keyCol=@@IDENTITY"; //晕,在Oracle该怎么办!!
command.InsertCommand=command;
他这里用了系统变量@@INDENTITY;

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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