0

次の説明を含む2つのテーブルを作成しました

SQL> desc new_emp Name Null?タイプ


EMPNO NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)HIREDATE DATE SAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)

SQL> desc old_emp Name Null?タイプ


EMPNO NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)HIREDATE DATE SAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)

これらの2つのテーブルに以下のMergeステートメントを使用しています

一致したときにold_empoon(o.empno = n.empno)を使用してnew_emp nにマージし、セットn.empno = o.empno、n.ename=oを更新します。ename、n.job = o.job、n.hiredate = o.hiredate、n.sal = o.sal、n.comm = o.comm、n.deptno = o.deptno
が一致しない場合は、値を挿入します(o。 empno、o。ename、o.job、o.hiredate、o.sal、o.comm、o.deptno)

上記のステートメントを実行すると、システムは次のエラーを表示します。ORACLE9iバージョンを使用しています。

ORA-00904:"N"。"EMPNO":識別子が無効です

4

1 に答える 1

0

Oracle 10.2.0.1.0 では、MERGE ステートメントで次のエラーが発生します。

ORA-38104: Columns referenced in the ON Clause cannot be updated: "N"."EMPNO"

したがって、SET 句から「n.empno=o.empno」を削除してみてください。

于 2010-03-01T10:20:03.887 に答える