合并 - Oracle 错误

Merge - Orcle error

在执行下面的代码时,出现错误 "Missing ON keyword" 但我已经写了 ON 子句。请协助查明原因。

merge into emp_temp s

using (select p.employee_id, p.salary, p.last_name,p.email, p.Hire_date, 
p.job_id from employees p
minus 
   select s.employee_id, s.salary, s.last_name,s.email, s.Hire_date, 
s.job_id from emp_temp s    
) EMPLOYEES p

ON (s.employee_id = p.employee_id)

when matched then
 update set s.salary = p.salary

when not matched then
insert 
(s.employee_id , s.salary,s.last_name,s.email,s.Hire_date, s.job_id) 
values
    (p.employee_id, p.salary, p.last_name,p.email, p.Hire_date, p.job_id);

来自这一行:

) EMPLOYEES p

您正在将 using 子句的别名设置为 EMPLOYEE,但您正试图将 that 重新别名为 p。该错误并不意味着您根本没有 ON 子句,只是它不是解析器期望看到它的地方。

由于您稍后引用 p,您只需要一个别名:

...
minus 
   select s.employee_id, s.salary, s.last_name,s.email, s.Hire_date, 
s.job_id from emp_temp s    
) p

ON (s.employee_id = p.employee_id)
...