我在一个字段中调用一个超过100个字符的请求的存储过程,并且因为字段大小为100以及如何为该特定字段的每100个字符拆分请求而失败?该特定字段的最大大小为100,当向该字段传递250个字符时,我们必须每100个字符拆分一次。
仅仅是从DB中读取值时,FYI不会将任何内容更新到DB中。
答案 0 :(得分:1)
你很少继续下去,但这是我对解决方案的最佳猜测:
String longStr; // your long string
for (String max100 : longStr.split("(?<=.{,100})")) {
connection.execute("call someProc('" + max100 + "')");
}
此代码非常简单,仅供说明使用。实际上,您将使用带占位符的预准备声明。
那就是说,分裂代码,这是这个问题的核心,应该是有帮助的。
答案 1 :(得分:0)
试试这个:
// longStr is your long string
String substring = null;
PreparedStatement prepped = connection.prepareeStatement("call someProc(?)", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
int maxLoop = longStr.length() / 100;
for (int i = 0; i < maxLoop; i++) {
substring = longStr.substring(100 * i, 100 * (i + 1));
prepped.setString(1, substring);
ResultSet result = prepped.executeQuery();
}
if (longStr.length() % 100 != 0) {
substring = longStr.substring(maxLoop * 100);
prepped.setString(1, substring);
ResultSet result = prepped.executeQuery();
}