数据库名称:oracle 数据库版本:11g 内容/问题描述: 各位好,小弟目前是写JAVA的工程师。 最近遇到的问题是,如果数据库有资料就UPDATE,否则就INSERT。 在MySQL上可以用ON DUPLICATE,但Oracle无这个语法。 后来有查询到MERGE INTO的语法。 我的语法大概是如下 MERGE INTO TABLE_A TA USING ( SELECT '值A' AS X,'值B' AS Y FROM DUAL) TB ON(TA.X=TB.X) WHEN MATCHED UPDEATE... WHEN NOT MATCHED THEN INSERT... 但公司的DBA说MERGE INTO是资料仓储(?)用,不是给我这样用的。 所以现在的解法是先SELECT回JAVA后,再判断要更新还是插入。 但这样不就要2次IO吗?如果我现在要处理10笔资料,不就要10*2=20次IO? 想请问是否有其他写法呢?(有另外查到用EXCEPTION的方式,但preparestatment似乎 不能加上分号(;)?这我会再试试看。) 谢谢~~