在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:无效的SQL语句
答案 0 :(得分:1)
您可能已经满足了这一点,但您可能需要在查询中转义单引号。
我还发现,在将查询传递给Oracle时,在我的情况下,使用OPENQUERY从SQL Server传递,分号使查询失败并且完全是Oracle错误代码。
可能就像从语句末尾删除分号一样简单