UPDATE¶
</ div>
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を返します。
SQL%FOUNDおよび他の同様の式の説明については、Obtaining the
Result
Statusを参照してください。
以下に、このプロシージャを使用した従業員の更新を示します。
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 *
UPDATEコマンドは、FORALLステートメントに含めることができます。
FORALLステートメントを使用すると、1つのUPDATEコマンドで、1つ以上のコレクションで提供された値からマルチプルの行を更新できます。
FORALLステートメントの詳細については、Using the FORALL
Statementを参照してください。