ORA-01795:
时间: 2023-08-17 15:16:03 浏览: 195
ORA-00904: "WM_CONCAT": 标识符无效
5星 · 资源好评率100%
ORA-01795是Oracle数据库中的一个异常,当在拼接SQL语句中使用了超过1000个参数的where in子句时,会抛出该异常。为了解决这个问题,可以将原SQL语句转换为等价的合法SQL语句。具体做法是将参数按照每1000个一组进行分组,然后使用多个where in子句进行连接。下面是一个示例的实现代码:
```java
private String GetWhereInValuesSql(String column, List<String> values) {
String sql = "(";
int valueSize = values.size();
int batchSize = valueSize / 1000 + (valueSize % 1000 == 0 ? 0 : 1);
for (int i = 0; i < batchSize; i++) {
if (i > 0) {
sql += ") or ";
}
sql += column + " in (";
for (int j = i * 1000; (j < (i + 1) * 1000) && j < valueSize; j++) {
if (j > i * 1000) {
sql += ",";
}
sql += "'" + values.get(j) + "'";
}
}
sql += "))";
return sql;
}
```
这个方法可以将where in语句中的参数按照每1000个一组进行分组,并使用多个where in子句进行连接,从而避免了ORA-01795异常的出现。
#### 引用[.reference_title]
- *1* *2* *3* [ORA-01795异常(where in超过1000)的解决](https://blog.csdn.net/free1985/article/details/75331393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文