SQL 語(yǔ)言中提供的 UPDATE 命令也可以在 SPL 程序中使用。

在 SQL UPDATE 命令中允許表達(dá)式時(shí),可以使用 SPL 語(yǔ)言中的表達(dá)式。因此,SPL 變量和參數(shù)可用于向更新操作提供值。

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;

如果行已更新,則 SQL%FOUND 條件表達(dá)式返回 TRUE,否則返回 FALSE。

以下顯示使用此存儲(chǔ)過(guò)程更新員工。

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)
說(shuō)明 UPDATE 命令可以包括在 FORALL 語(yǔ)句中。FORALL 語(yǔ)句允許單個(gè) UPDATE 命令更新來(lái)自一個(gè)或多個(gè)集合中提供的值的多行。