方法一:使用sequence
方法二:使用辅助变量,可以放在在另一个控制块或者全局变量,在数据块的when-new-record中加上 
if :id_no is not null then 
  :new_id := :id_no + 10;
end if;然后把id_no项的初始值设为:new_id.
最后,控制数据块只能在最后新增记录。不过,你的这个需求似乎没有考虑过多个用户同时录入的情形。

解决方案 »

  1.   

    我检查了一下,Oracle ERP 系统是输一笔记录后,用户可以去输下一张订单,所有输完后可保存.   所以正如你说的不用说多个用户,就是单个用户都无法解决.请问怎么处理?
      

  2.   

    用sequence+触发器来生成订单号,不允许用户录入。
    既然可以更改界面,我想你对数据库也应该有权限。
    注意:不要强求号码连续,很困难。
    至于多个用户或一次录入多条,由oracle自己来管理
    sequence,不必操心。我觉得这是最好的方法。
    在界面上做很麻烦。
      

  3.   

    谢谢
    不过我只有Application服务器的权限,Oracle服务器归其他人负责,我没权限.目前我们是在做训练开发.
    用sequence当然方便,可老大说不用Oracle,一切尽量在Form上实现,看各位的留言,我看Form上实现基本上不可能了.: )
      

  4.   

    如果非要在FORM上运行,可以使用MountLion(闷头睡) 类似的方式。
    主要是when_new_record_instance触发器,也不是不可能。
    但是可能会发生很多BUG,所以说很麻烦。
      

  5.   

    用sequence当然方便,可老大说不用Oracle,
    说服你的老大,怎么做不会出问题就怎么做.由oracle自己来管很方便的,为什么一定要在form上来实现呢.