Se metti i cicli uno dentro l'altro, confronterai tutti i record della seconda query col solo primo record della prima. Quando ricicli per il secondo record della prima, hai già liberato il resultset della seconda e prendi quell'errore.