假设myTable中的以下行:
- id = 1
- letter = 'a'
在Oracle中,可以轻松地执行以下操作:
- update myTable set
- letter = 'b'
- where id = 1
- returning letter
- into myVariable;
然后myVariable将保存值“b”.
我正在寻找的是一些返回信件的“之前”值的方法
即.将以前的更新替换为:
- update myTable set
- letter = 'b'
- where id = 1
- returning letter "before the update"
- into myVariable;
而myVariable应该保存值’a’;
我明白T-sql可以通过OUTPUT子句来实现.
有没有Oracle等同的方式实现这一点,所以我不必先做一个“选择”只是为了获得以前的价值?
- update
- (
- select T.*,(select letter from DUAL) old_letter
- from myTable T
- where id=1
- )
- set letter = 'b'
- returning old_letter into myVariable;
经过Oracle 11.2测试