The UPDATE statement available in the SQL language can also be used in SPL programs.
An expression in the SPL language can be used wherever an expression is allowed in the SQL UPDATE statement. Therefore, SPL variables and parameters can be used to supply values to the update operation.
CREATE OR REPLACE PROCEDURE emp_comp_update (
p_empno IN emp.empno%TYPE,
p_sal IN emp.sal%TYPE,
p_comm IN emp.comm%TYPE
)
IS
BEGIN
UPDATE emp SET sal = p_sal, comm = p_comm WHERE empno = p_empno;
IF SQL%FOUND THEN
DBMS_OUTPUT.PUT_LINE('Updated Employee # : ' || p_empno);
DBMS_OUTPUT.PUT_LINE('New Salary : ' || p_sal);
DBMS_OUTPUT.PUT_LINE('New Commission : ' || p_comm);
ELSE
DBMS_OUTPUT.PUT_LINE('Employee # ' || p_empno || ' not found');
END IF;
END;
If a row is updated, the SQL%FOUND conditional expression returns TRUE. Otherwise, the expression returns FALSE.
The following example shows the update on the employee using this procedure:
EXEC emp_comp_update(9503, 6540, 1200);
Updated Employee # : 9503
New Salary : 6540
New Commission : 1200
SELECT * FROM emp WHERE empno = 9503;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+----------+---------+------+--------------------+---------+---------+--------
9503 | PETERSON | ANALYST | 7902 | 31-MAR-05 00:00:00 | 6540.00 | 1200.00 | 40
(1 row)
Note The UPDATE statement can be included in a FORALL statement. A FORALL statement allows
a single UPDATE statement to update multiple rows from values supplied in one or more
collections.