RETURNING INTO Clause
The use of the
RETURNING INTO
clause is
described.
The
RETURNING INTO
clause allows you to
- Fetch values changed during an update
- Return auto-generated keys during a single-row insert operation
- List rows deleted
Example 7-10 Using the RETURNING INTO Clause
This example shows how to retrieve the old and new values after an update operation. These values can be used for further processing.
CREATE OR REPLACE PROCEDURE ret_into_ex_proc(
"firstEmpID" NUMBER,
"lastEmpID" NUMBER
)
AS MLE LANGUAGE JAVASCRIPT
{{
if (firstEmpID === null || lastEmpID === null){
throw new Error(
`must provide deptName and sal to ret_into_ex_proc()`
);
}
const result = session.execute(
`UPDATE
hr.employees
SET
last_name = upper(last_name)
WHERE
employee_id between :firstEmpID and :lastEmpID
RETURNING
old last_name
new last_name
INTO
:oldLastName,
:newLastName`,
{
firstEmpID: {
dir: oracledb.BIND_IN,
val: firstEmpID,
type: oracledb.NUMBER
},
lastEmpID: {
dir: oracledb.BIND_IN,
val: lastEmpID,
type: oracledb.NUMBER
},
oldLastName: {
type: oracledb.STRING,
dir: oracledb.BIND_OUT
},
newLastName: {
type: oracledb.STRING,
dir: oracledb.BIND_OUT
}
}
);
if (result.rowsAffected > 1){
console.log(
`update() completed successfully:
- old values: ${JSON.stringify(result.outBinds.oldLastName)}
- new values: ${JSON.stringify(result.outBinds.newLastName)}`
);
} else {
throw new Error(
`found no row to update in range ${firstEmpID} to ${lastEmpID}`
);
}
}};
/
This example features both
IN
and OUT
bind
variables:
firstEmpID
andlastEmpID
specify the data range to be updatedoldLastName
is an array containing all the last names as they were before the updatenewLastName
is another array containing the new values
Parent topic: Bind Variables