secquence是可以,而且速度快
如果不会的话还可以用程序实现。select .  update.

解决方案 »

  1.   

    拜托,各个给个例子,不要钓胃口啊,分不够可以开帖再送,
    sequence.currval要在用了sequence.nextval之后才有效,就是说在insert之后就调用sequence.currval值,不能分开执行,另外sequence的值不能用在where子句中。各位帮我想想办法吧
      

  2.   

    不行,返回主键值必须在插入语句之后立即执行,要不然就可能会有其他用户更新主键值,哪就不对了
    在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;
      

  3.   

    使用select 序列.nextval from dual;
      

  4.   

    主键的值是在插入触发器中调用sequence.nextval来添加的,而不是自己调用select sequence.nextval from dual获值后加入到表中的,
      

  5.   

    你用select sequence.nextval from dual不是能得到主健吗!
      

  6.   

    我也遇到过同样的问题,只是数据库系统并没有提供这样的系统变量。我的解决办法是:
    (1)在数据表中增加一个时间域,
    (2)插入记录前先用一个变量保存当前系统时间;
    (3)插入记录
    (4)查询该数据表,查询条件为该时间域。(timestamp的单位是百分之三秒)
      

  7.   

    I don't know how to get identity in Oracle database, gz!
      

  8.   

    在Oracle中有一个数据类型UROWID,把变量定义为UROWID应该就可以了。