假设myTable中的以下行:
id = 1
letter = 'a'
Run Code Online (Sandbox Code Playgroud)
在Oracle中,可以轻松地执行以下操作:
update myTable set
letter = 'b'
where id = 1
returning letter
into myVariable;
Run Code Online (Sandbox Code Playgroud)
然后myVariable将保持值'b'.
我正在寻找的是一些返回字母"之前"值的方法
即.将以前的更新替换为:
update myTable set
letter = 'b'
where id = 1
returning letter "before the update"
into myVariable;
Run Code Online (Sandbox Code Playgroud)
然后myVariable应该保持值'a';
我知道T-SQL可以通过OUTPUT子句实现这一点.
有没有Oracle等效的方法来实现这一点,所以我不必先做一个"选择"只是为了得到之前的值?
Mik*_*ike 11
update
(
select T.*, (select letter from DUAL) old_letter
from myTable T
where id=1
)
set letter = 'b'
returning old_letter into myVariable;
Run Code Online (Sandbox Code Playgroud)
在Oracle 11.2上测试过