@@ -3042,6 +3042,7 @@ public void testReturnParameterJsonDualityView() {
3042
3042
" FROM testReturnParameterJsonDualityViewTable t" +
3043
3043
" WITH INSERT UPDATE DELETE" ));
3044
3044
3045
+ // Verify returning the "data" column
3045
3046
OracleJsonObject insertObject = new OracleJsonFactory ().createObject ();
3046
3047
insertObject .put ("id" , 1 );
3047
3048
insertObject .put ("value" , "a" );
@@ -3061,6 +3062,26 @@ public void testReturnParameterJsonDualityView() {
3061
3062
outParameters .get (0 , OracleJsonObject .class )));
3062
3063
insertObject .put ("_metadata" , returnObject .get ("_metadata" ));
3063
3064
assertEquals (insertObject , returnObject );
3065
+
3066
+ // Verify returning a JSON_VALUE expression
3067
+ OracleJsonObject insertObjectB = new OracleJsonFactory ().createObject ();
3068
+ insertObjectB .put ("id" , 2 );
3069
+ insertObjectB .put ("value" , "b" );
3070
+ Statement returnStatementB = connection .createStatement (
3071
+ "BEGIN" +
3072
+ " INSERT INTO testReturnParameterJsonDualityView" +
3073
+ " VALUES (?)" +
3074
+ " RETURNING JSON_VALUE(DATA, '$.id')" +
3075
+ " INTO ?;" +
3076
+ " END;" );
3077
+ returnStatementB .bind (0 , insertObjectB );
3078
+ returnStatementB .bind (1 , Parameters .out (R2dbcType .NUMERIC ));
3079
+
3080
+ Result returnResultB = awaitOne (returnStatementB .execute ());
3081
+ int returnId =
3082
+ awaitOne (returnResultB .map (outParameters ->
3083
+ outParameters .get (0 , Integer .class )));
3084
+ assertEquals (insertObjectB .getInt ("id" ), returnId );
3064
3085
}
3065
3086
finally {
3066
3087
tryAwaitExecution (connection .createStatement (
0 commit comments