presta attenzione all'uso del do... while e al solo while.

La differenza e' notevole. In pratica:

Il while controlla il TRUE o il FALSE all'inizio del ciclo. il DO ... WHILE alla fine del primo ciclo e poi all'inizio di ogni ciclo while.

Risultato il DO ... WHILE esegue "sempre" l'istruzione che si trova tra DO e WHILE. Anche se il risultato della query fosse FALSE.