FETCH in set di risultati..

lunedì 18 febbraio 2008 - 09.46

angie81 Profilo | Junior Member

se utilizzo FETCH NEXT in un set di risultati (select da archivio..), arrivati all'ultimo record.. ricomincia il ciclo o si ferma e quindi andando avanti mi da messaggio d'errore?

a me servirebbe che una volta arrivato all'ultimo record.. ricominci il ciclo dal primo...

lbenaglia Profilo | Guru

>se utilizzo FETCH NEXT in un set di risultati (select da archivio..),
>arrivati all'ultimo record.. ricomincia il ciclo o si ferma e
>quindi andando avanti mi da messaggio d'errore?

Arrivi ad End Of File (EOF) e se provi ad eseguire una ulteriore fetch otterrai un messaggio d'errore.

>a me servirebbe che una volta arrivato all'ultimo record.. ricominci
>il ciclo dal primo...
Non è possibile, devi farlo applicativamente eseguendo una FETCH FIRST (se il result set è scrollabile), alttrimenti risottomenttendo la query.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

angie81 Profilo | Junior Member

così (naturalmente questo all'interno di un ciclo..)?

IF @conta_avvocati < @@CURSOR_ROWS BEGIN FETCH NEXT FROM Avvocati INTO @idanagrafica END ELSE BEGIN FETCH FIRST FROM Avvocati INTO @idanagrafica END SET @conta_avvocati = @conta_avvocati + 1

lbenaglia Profilo | Guru

>così (naturalmente questo all'interno di un ciclo..)?

Interroga la funzione @@FETCH_STATUS:

IF @@FETCH_STATUS = 0 FETCH NEXT FROM Avvocati INTO @idanagrafica ELSE FETCH FIRST FROM Avvocati INTO @idanagrafica

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

angie81 Profilo | Junior Member

avevo anche pensato a questa soluzione..
ma con FETCH_STATUS avrei il valore "-2" solo nel caso in cui il FETCH raggiunga l'ultimo record?

o anche in altri casi?

lbenaglia Profilo | Guru

>avevo anche pensato a questa soluzione..
>ma con FETCH_STATUS avrei il valore "-2" solo nel caso in cui
>il FETCH raggiunga l'ultimo record?

Avresti -1 quando sei arrivato a EOF.
-2 ce l'hai quando un'altra connessione elimina la riga che stai cercando di leggere.

"@@FETCH_STATUS (Transact-SQL)"
http://msdn2.microsoft.com/en-us/library/ms187308.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

angie81 Profilo | Junior Member

grazie mille

angie81 Profilo | Junior Member

ulteriore domanda..
col FETCH posso andare avanti o indietro di N record?

lbenaglia Profilo | Guru

>ulteriore domanda..
>col FETCH posso andare avanti o indietro di N record?

FETCH ABSOLUTE...
FETCH RELATIVE...

http://msdn2.microsoft.com/en-us/library/ms180152.aspx

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

angie81 Profilo | Junior Member

bene! FETCH RELATIVE è quel che fa al caso mio!

grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5