You can find this in the SQL standard, which defines general rules.
Oracle certainly complies with this standard. See Here - SQL 92: http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
Page 393, chapter "13.9 <update instruction: positioned>", paragraph 6)
6) The effect of the expression <value> s is effectively evaluated before updating, in the line of the object. If a contains a reference to column T, then a reference to the value of this column in the object row before any value of the object row is updated.
Consider the general update syntax: <
UPDATE .... SET <object column 1> = <value expression 1>, <object column 2> = <value expression 2>, ...... <object column N> = <value expression N>;
Rule # 6 states that all expressions on the right side are first evaluated before updating any column in the row.
When evaluating all expressions, only the values โโof old lines are taken into account (before updating).
source share