Oracle在同一事务期间访问更新的记录

Oracle在同一事务期间访问更新的记录,oracle,transactions,Oracle,Transactions,使用Oracle 10g 是否可以在提交同一事务之前获取新更新字段的值 我正在执行一个调用另外两个存储过程的存储过程 第一个存储过程从表中获取一条记录,然后更新该记录 第二个存储过程获取相同的记录,但需要使用第一个存储过程中新更新的字段 然后执行提交 只有当两个过程都成功执行时,才能执行提交 第二个存储过程将获得最新更新的数据,还是将获得第一个过程中返回的相同数据的副本而不进行更新?Oracle有一个非常简单而健壮的读取一致性实现: 用户看到数据的最新版本,包括当前事务所做的任何更改,但是 在

使用Oracle 10g

是否可以在提交同一事务之前获取新更新字段的值

我正在执行一个调用另外两个存储过程的存储过程

第一个存储过程从表中获取一条记录,然后更新该记录

第二个存储过程获取相同的记录,但需要使用第一个存储过程中新更新的字段

然后执行提交

只有当两个过程都成功执行时,才能执行提交


第二个存储过程将获得最新更新的数据,还是将获得第一个过程中返回的相同数据的副本而不进行更新?

Oracle有一个非常简单而健壮的读取一致性实现:

  • 用户看到数据的最新版本,包括当前事务所做的任何更改,但是
  • 在其他用户发出commit之前,甚至在执行新语句之前,用户都无法看到其他用户所做的更改

概念指南中介绍了这一点

如果所有事务都是一个事务,那么过程2只需要选择有问题的行。它将看到当前(更新的)值。@lan:您可以将第一个过程中的记录作为OUT参数返回,并将该记录作为第二个过程中的IN参数使用Proc@a_horse_with_no_name我希望你会这么说。谢谢。@GauravSoni谢谢,但我希望我不需要修改过程的参数。@lan Jordan:在这种情况下,将变量设置为
全局变量
,如果且仅当您的所有三个过程都在
相同的包中
,但修改过程的参数没有害处,使代码可读的事实。