在 SQLDeveloper 中使用以下查询来测试合并一切正常:
merge into proj.person_registry pr
using (
select null as id,
'69696696553' as code,
'TESTYMC' as name,
'WHATEVER' as firstname,
'M' as cl_gender,
'E' as cl_status,
null as birth_date,
null as death_date,
null as citizen_country_code,
null as country_code,
null as location_code,
null as zip,
'SOMETOWN' as aadress,
null as date_updated,
null as date_created,
null as aadress_date
from dual) t on (pr.code = t.code)
when matched then update set
pr.name = t.name,
pr.firstname = t.firstname,
pr.cl_gender = t.cl_gender,
pr.cl_status = t.cl_status,
pr.birth_date = t.birth_date,
pr.death_date = t.death_date,
pr.citizen_country_code = t.citizen_country_code,
pr.country_code = t.country_code,
pr.location_code = t.location_code,
pr.zip = t.zip,
pr.aadress = t.aadress,
pr.aadress_date = t.aadress_date
when not matched then
insert values (t.id, t.code, t.name, t.firstname, t.cl_gender, t.cl_status, t.birth_date, t.death_date, t.citizen_country_code, t.country_code, t.location_code, t.zip, t.aadress, t.date_created, t.date_updated, t.aadress_date);
但是尝试使用 jdbc 在我的代码中执行它会引发 BadSqlGrammarException,原因如下: java.sql.SQLException: ORA-00900: invalid SQL statement