合并 - Oracle错误

时间:2015-03-18 12:26:07

标签: oracle merge

执行以下代码时,收到错误"缺少ON关键字" 但我已经写过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);

1 个答案:

答案 0 :(得分:1)

它来自这条线:

) EMPLOYEES p

您将using子句的别名设置为EMPLOYEE,但您尝试将 重新别名为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)
...