6

更新に問題があり、下の列に挿入します。これについてアドバイスしてください。

これが入力です

depnto   extra    comm
----------------------------
20       300      NULL
20       300      400
20       NULL     NULL
20       500      NULL

これは予想される出力です

depnto  Extra    comm
---------------------
20      300      300
20      300      400
20      NULL     NULL           
20      500      500

以下の条件commで列を列で更新する必要があります。extra

  • comm が null の場合、追加の値が comm に更新されます。
  • comm が null でない場合、更新する必要はありません。
  • 両方が null の場合は、null のままにし、
  • comm 列に値がある場合、上書きする必要はありません。

私のプログラムは以下です。どの行が更新され、別のテーブルのどの値に更新されるかを追跡する必要があります。

PROCEDURE (dept_id )
AS
BEGIN
   FOR r IN (SELECT *
               FROM emp
              WHERE comm IS NULL AND extra IS NOT NULL AND deptno = dept_id)
   LOOP
      UPDATE emp
         SET comm = extra
       WHERE comm IS NULL AND extra IS NOT NULL AND deptno = dept_id;



      INSERT INTO changed_comm (deptno, oldval, newval)
           VALUES (dept_id, r.comm, r.extra);
   END LOOP;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      NULL;
END;

以上について意見をお願いします。正しく挿入されていません。

4

2 に答える 2