回答

收藏

UPSERT功能的存储过程

技术问答 技术问答 258 人阅读 | 0 人回复 | 2023-09-12

下面是我的桌子ID column is Primary Key。另外两列是字符串。
4 ?. v$ Q! A1 Q/ R我正在使用一个名为新数据库的新数据库XpressMP。/ }* D4 V6 C5 T
Column Name                -------ID             PrimaryKey                 SEARCHES       StringACCOUNT        String我在努力实现UPSERT此处的功能-' e' r! j: P* t" b
If ID doesn't exists here then insert a new record.And ID exists then update the record.如果我知道的话,如果我在使用它,Oracle,所以我可以用MERGEsql命令,但是MERGE不支持数据库sql到目前为止,还没有其他命令。但我相信我能做同样的事情StoredProcedure。7 l- K- P9 X9 W5 J0 _
谁能提出一些建议来解释我如何使用存储过程来做同样的事情?因为存储过程将在那里工作。, w: y" v( A5 D
更新:-+ l2 N+ c, H1 x; Y& ?
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";每当我尝试执行上述存储过程时. g& U6 ]: b, a
preparedStatement = dbConnection.prepareStatement(INSERT);preparedStatement.setString(1,String.valueOf(userId));preparedStatement.setString(2,Constants.getaAccount(userId));preparedStatement.setString(3,Constants.getaAdvertising(userId));preparedStatement.executeUpdate();我有例外吗?这是执行它的正确方法吗?
" ?' Y7 d- [- L9 J                                                               
' r' D+ f$ d1 C" N6 _    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则