Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Ripetizione ciclo fino alla fine dei valori presenti nella tabella
venerdì 06 luglio 2007 - 14.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
MagicBotolo
Profilo
| Newbie
28
messaggi | Data Invio:
ven 6 lug 2007 - 14:23
Ciao, questa volta vi scrivo per chiedere come si può scorrere i valori di una tabella uno alla volta. Mi spiego meglio: prima avevo una tabella del tipo 1;2;3;4 (unica colonna con numeri diversi, sicuramente crescenti) e ripetevo alcune azioni inserendole in un ciclo del tipo
SELECT @key=MIN(keyvalue) from #keys
WHILE @key IS NOT NULL
BEGIN
...
SELECT @key=MIN(keyvalue) from #keys
WHERE keyvalue>@key
END
In pratica estraevo i dati da una tabella, con questi dati estratti riempivo i campi della tabella #keys e poi scorrevo i campi inserendo questi valori nella variabile @key.
Adesso la tabella #keys è del tipo A,1;A,2;A,3;B,1;B,2;C,3 (due colonne). Questo significa che non posso più usare il criterio del considerare il nuovo valore della variabile @key maggiore del valore precedente (perchè nella variabile @key continuo a memorizzare i numeri).
Pensavo di usare i cursori con una query del tipo:
DECLARE Cursore CURSOR FOR
SELECT DATI.ID_SENS, DATI.ID_MIS
FROM DATI, Tabella
WHERE DATI.ID_SENS = Tabella.ID_SENS
AND DATI.ID_MIS = Tabella.ID_MIS
group by DATI.ID_SENS, DATI.ID_MIS
order by DATI.ID_SENS, DATI.ID_MIS
OPEN Cursore
FETCH NEXT FROM Cursore
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Cursore
END
CLOSE Cursore
DEALLOCATE Cursore
Facendo così mi sposto nelle tabelle analizzando tutte le posizioni. Di per sè funziona...
Ma vi chiedo se c'è un modo più interessante (magari più performante) o se quello che ho scelto è scritto nel modo migliore.
Uso Microsoft SQL Server 2000.
Grazie 1000...
Ciao!!
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 6 lug 2007 - 15:09
>Ma vi chiedo se c'è un modo più interessante (magari più performante)
>o se quello che ho scelto è scritto nel modo migliore.
>
>Uso Microsoft SQL Server 2000.
Con SQL Server i cursori andrebbero evitati come la peste dato che nel 99% dei casi si possono sostituire con operazioni set-based.
Per quale motivo devi scorrere le righe della tabella row-by-row?
>Grazie 1000...
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
MagicBotolo
Profilo
| Newbie
28
messaggi | Data Invio:
ven 6 lug 2007 - 15:23
Devo scorrere i valori uno alla volta perchè per ognuno devo fare delle operazioni di estrazione e sistemazione dati... E il dato estratto devo usarlo all'interno delle operazioni. Ecco perchè l'uso di una variabile mi diventa indispensabile. Per non complicare troppo la procedura che sto già usando mi chiedevo se esiste un modo per scorrere le righe una alla volta; altrimenti dovrei fare confronti tra il numero e la lettera letti e in base al risultato prendere una decisione (potrei per esempio fare un doppio ciclo, prima sulle lettere e poi sui numeri)...
Ciao!!
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 6 lug 2007 - 15:36
>Per non complicare troppo la procedura che sto già usando mi chiedevo
>se esiste un modo per scorrere le righe una alla volta;
Usa i cursori...
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !