@lew
You cannot assign a value directly to an Oracle cursor while iterating through it. Cursors in Oracle are read-only and cannot be updated or modified while iterating through them.
If you need to modify the data being retrieved by a cursor, you will need to fetch the data into a variable or array and then modify the values in the variable or array.
For example, you can use a loop to fetch each row from the cursor into a variable and then update the values in the variable:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
DECLARE CURSOR c_emp IS SELECT employee_id, first_name, last_name FROM employees; v_employee_id employees.employee_id%TYPE; v_first_name employees.first_name%TYPE; v_last_name employees.last_name%TYPE; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO v_employee_id, v_first_name, v_last_name; EXIT WHEN c_emp%NOTFOUND; -- Modify the values in the variables here -- For example, update the last_name to 'Doe' v_last_name := 'Doe'; -- Display the modified data DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_employee_id || ', First Name: ' || v_first_name || ', Last Name: ' || v_last_name); END LOOP; CLOSE c_emp; END; / |
In the above example, we fetch each row from the c_emp
cursor into the variables v_employee_id
, v_first_name
, and v_last_name
, and then update the v_last_name
variable to 'Doe'. This modified data is then displayed using DBMS_OUTPUT
.