2015-03-18 2 views
0

Выполнение приведенного ниже кода, получение ошибки "Отсутствует ключевое слово ON", но я уже написал предложение ON. Пожалуйста, помогите по причине.Ошибка Merge - Orcle

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

Это идет от этой линии:

) EMPLOYEES p 

Вы устанавливаете псевдоним, используя Пунктом как 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) 
... 
+0

Спасибо Алекс. После того, как вы порекомендовали изменения, код работает. –

Смежные вопросы