SQL 語言中提供的 UPDATE 命令也可以在 SPL 程式中使用。
在 SQL UPDATE 命令中允許運算式時,可以使用 SPL 語言中的運算式。因此,SPL 變數和參數可用於向更新操作提供值。
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 條件運算式返回 TRUE,否則返回 FALSE。
以下顯示使用此預存程序更新員工。
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)
說明 UPDATE 命令可以包括在 FORALL 語句中。FORALL 語句允許單個 UPDATE 命令更新來自一個或多個集合中提供的值的多行。