Oracle 11gで次のコードを実行しようとしていますが、エラーが発生します。
MERGE INTO EMP_COPY4 C
USING (SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.EMAIL, E.COMMISSION_PCT FROM EMPLOYEES) E
ON (C.EMPLOYEE_ID = E.EMPLOYEE_ID)
WHEN MATCHED THEN
UPDATE SET
C.FIRST_NAME = E.FIRST_NAME,
C.LAST_NAME = E.LAST_NAME,
C.EMAIL = E.EMAIL,
C.COMMISSION_PCT = E.COMMISSION_PCT
DELETE WHERE (E.COMMISSION_PCT IS NOT NULL)
WHEN NOT MATCHED THEN
INSERT VALUES (E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.EMAIL, E.COMMISSION_PCT);
EMP_COPY4はEMPLOYEESのコピーテーブルであり、EMPLOYEE_ID、FIRST_NAME、LAST_NAME、EMAIL、COMMISSION_PCTの列のみがあります。
特定の条件でそれらをマージしようとしましたが、オラクルは次のエラーを出します
Error starting at line : 405 in command -
MERGE INTO EMP_COPY4 C
USING (SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.EMAIL, E.COMMISSION_PCT FROM EMPLOYEES) E
ON (C.EMPLOYEE_ID = E.EMPLOYEE_ID)
WHEN MATCHED THEN
UPDATE SET
C.FIRST_NAME = E.FIRST_NAME,
C.LAST_NAME = E.LAST_NAME,
C.EMAIL = E.EMAIL,
C.COMMISSION_PCT = E.COMMISSION_PCT
DELETE WHERE (E.COMMISSION_PCT IS NOT NULL)
WHEN NOT MATCHED THEN
INSERT VALUES (E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.EMAIL, E.COMMISSION_PCT)
Error at Command Line : 406 Column : 66
Error report -
SQL Error: ORA-00904: "E"."COMMISSION_PCT": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
行405はステートメントの開始であり、行406は2行目です。
なぜそのようなエラーが発生するのか理解するのを手伝ってくれませんか...?
2次元線をいずれかに置き換えます
USING (SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, COMMISSION_PCT FROM EMPLOYEES) E
または
USING (SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.EMAIL, E.COMMISSION_PCT FROM EMPLOYEES E) E
テーブルがエイリアスされていない場合、SELECTリストでエイリアスを使用することはできません
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加