下面是我的表,其中ID column is Primary Key
. 其他两列是字符串。
我正在使用一个名为XpressMP
.
Column Name
-------
ID PrimaryKey
SEARCHES String
ACCOUNT String
我正在尝试实现这里的功能UPSERT
-
If ID doesn't exists here then insert a new record.
And ID exists then update the record.
我知道如果我正在使用 Oracle,那么我可以使用MERGE
sql 命令,但MERGE
该数据库不支持该命令,并且到目前为止还没有其他命令。但我相信我可以用Stored Procedure
.
谁能提供一些建议我如何用存储过程做同样的事情?因为存储过程将在那里工作。
更新:-
public final static String INSERT = "BEGIN"
+" INSERT INTO TABLE (ID, SEARCHES, ACCOUNT) VALUES (?, ?, ?)"
+" EXCEPTION"
+" WHEN DUP_VAL_ON_INDEX THEN"
+" UPDATE TABLE"
+" SET SEARCHES = ?, ACCOUNT = ?"
+" WHERE ID = ?"
+" END";
每当我尝试像这样执行上述存储过程时
preparedStatement = dbConnection.prepareStatement(INSERT);
preparedStatement.setString(1, String.valueOf(userId));
preparedStatement.setString(2, Constants.getaAccount(userId));
preparedStatement.setString(3, Constants.getaAdvertising(userId));
preparedStatement.executeUpdate();
我得到例外?这是执行它的正确方法吗?