Ich führe eine Speicherprozedur in Java aus. Eine der Prozeduren gibt mehrere Zeilen zurück.So rufen Sie ResultSet von CallableStatment nach executeUpdate() ab
int haveResults = Param.callableStatement.executeUpdate();
System.out.println(haveResults);
if (haveResults > 0) {
System.out.println("I have results"); //This statement is printed
ResultSet rs = Param.callableStatement.getResultSet();
while (rs.next()) { //This is where I am getting error:NullPointerException
//If I comment 'while(rs.next())' then code is giving output but then it can't handle multiple rows
itr1 = listOutParam.iterator();
while (itr1.hasNext()) {
Object obj = null;
obj = ParameterGetter.getParameter(itr1.next().toString(), counter1);
list.add(obj);
counter1++;
}
System.out.println(list.toString());
list1.add(list);
counter1 = counter2;
}
}
}
Ich habe versucht, mit execute(), aber dann, wenn false Wert zurückgibt angibt, dass die Prozedur nicht erfolgreich ausgeführt wird.
tun 'while (rs.hasNext()) {' statt 'while (rs.next()) {'. Genau wie in der zweiten while-Schleife – jhamon
ResultSet hat keine hasNext-Methode – Abhishek
Wie im verknüpften Duplikat erklärt ein 'false' Ergebnis von' execute' (oder 'getMoreResults') bedeutet nicht, dass es keine Ergebnisse gibt; Es bedeutet nur, dass das aktuelle Ergebnis eine Aktualisierungsanzahl und keine Ergebnismenge ist. Anstatt den Ansatz in der verknüpften Frage zu verwenden, können Sie auch "SET NOCOUNT ON" in der ersten Zeile der gespeicherten Prozedur hinzufügen. –