You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Descriptor URLs of the form ```(DESCRIPTION=...)``` may be specified in a tnsnames.ora file.
161
+
- The directory containing the tnsnames.ora file may be specified as an ```Option``` having the name "TNS_ADMIN"
162
+
- An alias of a tnsnames.ora file may be specified as the value of ```ConnectionFactoryOptions.HOST```.
163
+
- An alias of a tnsnames.ora file may be specified with an R2DBC URL: ```r2dbc:oracle://my_alias?TNS_ADMIN=/path/to/tnsnames/```
160
164
161
165
162
166
### Thread Safety and Parallel Execution
@@ -195,15 +199,25 @@ be used when setting the bind value of an unnamed parameter.
195
199
colon character (:) is followed by an alphanumeric parameter name. A name
196
200
or numeric index may be used when setting the bind value of a named parameter.
197
201
- Parameter names are case-sensitive.
198
-
- The [ROWID](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/tables-and-table-clusters.html#GUID-0258C4C2-2BF2-445F-B1E1-F282A57A6859)
199
-
of each row affected by an INSERT or UPDATE is returned as the generated value
200
-
for the empty set of column names.
202
+
- When an empty set of column names is specified to Statement.returnGeneratedValues(String...), executing that ```Statement``` returns the [ROWID](https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/tables-and-table-clusters.html#GUID-0258C4C2-2BF2-445F-B1E1-F282A57A6859)
203
+
of each row affected by an INSERT or UPDATE.
204
+
- This behavior may change in a later release.
205
+
- Programmers are advised not to use the ROWID as if it were a primary key.
206
+
- The ROWID of a row may change.
207
+
- After a row is deleted, it's ROWID may be reassigned to a new row.
208
+
- Further Reading: https://asktom.oracle.com/pls/apex/asktom.search?tag=is-it-safe-to-use-rowid-to-locate-a-row
201
209
- A **blocking database call** is executed by a Statement returning generated
202
210
values for a non-empty set of column names.
203
211
- The **blocking database call** is a known limitation that will be resolved
204
212
with a non-blocking implementation of
205
213
java.sql.Connection.prepareStatement(String, String[]) in the Oracle JDBC Driver.
206
214
The Oracle JDBC Team is aware of this problem and is working on a fix.
215
+
- Returning generated values is only supported for INSERT and UPDATE commands when a RETURNING INTO clause can be appended to the end of that command. (This limitation may be resolved in a later release)
216
+
- Example: `INSERT INTO my_table(val) VALUES (:val)` is supported because a RETURNING INTO clause may be appended to this command.
217
+
- Example: `INSERT INTO my_table(val) SELECT 1 FROM sys.dual` is not supported because a RETURNING INTO clause may not be appended to this command.
218
+
- The Oracle Database SQL Language Reference defines INSERT and UPDATE commands for which a RETURNING INTO clause is supported.
0 commit comments