【发布时间】:2020-07-13 15:51:53
【问题描述】:
我对合并有疑问。当它在 SqlDeveloper 中运行时,它可以正确执行。但是当我尝试使用 jdbc 在 java 中执行时,它会冻结。
@Override
public void updateRegion(int id, int region) {
try {
PreparedStatement statement = connection.prepareStatement(
"MERGE INTO LINKING_DOCTORS_TO_REGION l "
+ "USING LINKING_DOCTORS_TO_REGION l1 "
+ "ON (l1.user_ = ?) "
+ "WHEN MATCHED THEN UPDATE SET region = ? "
+ "WHEN NOT MATCHED THEN INSERT (region, user_) VALUES (?, ?)");
statement.setInt(1, id);
statement.setInt(4, id);
statement.setInt(2, region);
statement.setInt(3, region);
statement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
怎么了?谢谢
【问题讨论】:
-
你能把它做成一个存储过程吗?然后如果可能的话,你可以尝试通过“{call mergeSp(?, ?, ?, ?)}”来调用它