Coppia cursori

lunedì 01 marzo 2010 - 19.15

ciccioherz Profilo | Junior Member

ho bisogno di inserire un cursore in una stored per capire se la colonna "A" ha un certo valore, in caso positivo devo aggiornare la colonna "B".

poichè la colonna A non è univoca, dovrei aprire un secondo cursore che vada di pari passo con il primo in modo da ottenere l'id del record in cui il curose si trova, così facendo potrei fare:

se A = "..." update tabella insert "b" valore where id = @var

la domanda è: esiste un modo per evitare di aprire due cursori? cioè, all'interno del ciclo while non esiste alcun modo per recuperare nel mio caso l'id del record in cui si trova il cursore?

grazie
---

modifico e annullo il messaggio (la stanchezza gioca brutti scherzi)
faccio prima a creare il cursore sull'id e ottengo il campo A,B, o altro che sia in base proprio all'id ottenuto dal cursore..

lbenaglia Profilo | Guru

>la domanda è: esiste un modo per evitare di aprire due cursori?
Ti posso assicurare che il 99,999% delle volte si può ottenere il medesimo risultato utilizzando una soluzione set-based senza l'utilizzo di alcun cursore che obbliga inutilmente il dbengine a ragionare riga-per-riga impedendo tutte le ottimizzazioni che il motore è in grado di eseguire.

Se prepari un esempio completo con la struttura delle tabelle (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che intendi ottenere con quei dati vedremo di trovare una soluzione alternativa.

>modifico e annullo il messaggio (la stanchezza gioca brutti scherzi)
>faccio prima a creare il cursore sull'id e ottengo il campo A,B,
>o altro che sia in base proprio all'id ottenuto dal cursore..
Fai prima a non creare alcun cursore!

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5