0
저장 프로 시저를 실행하고 둘 이상의 행이 반환 될 때 결과를 수집 할 수 있습니다. 그러나 프로 시저가 1 행을 반환하면 ResultSet.next()는 항상 false를 반환하므로 해당 데이터를 가져올 수 없습니다. 왜 이런 일이 일어나는가?Java SQL 저장 프로 시저 ResultSet은 1 행만 포함하는 결과에서 데이터를 가져올 수 없습니다.
List<Panel> panels = new ArrayList<>();
try {
String SPsql = "EXEC [dbo].[CR_Pick_Trim_Route] ?";
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://database", "username", "password");
CallableStatement ps = conn.prepareCall(SPsql);
ps.setEscapeProcessing(true);
ps.setQueryTimeout(300);
ps.setString(1, route);
boolean hadResults = ps.execute();
while (hadResults)
{
ResultSet reset = ps.getResultSet();
while (reset.next()) {
String route_name = reset.getString("route_name");
String order_no = reset.getString("order_no");
String product = reset.getString("pick_comp");
String drop_no = reset.getString("drop_no");
String desc = reset.getString("long_description");
String analysisA = reset.getString("analysis_a");
String consumer = reset.getString("comp_cons");
String warehouse = reset.getString("pick_wh");
String key = reset.getString("Key");
int total = reset.getInt("pick_qty");
String scanned = reset.getString("Scanned");
String picked = reset.getString("picked");
String original = reset.getString("original");
Panel p = new Panel(route_name, order_no, drop_no, product, desc, analysisA, consumer, warehouse, (!picked.equals("No")), key, total, (scanned.contains("Y")), original);
panels.add(p);
}
hadResults = ps.getMoreResults();
}