Cursores de SQl

22/11/2004 - 23:37 por fabicabrera | Informe spam
Saludos Grupo!

Necesito crar una consulta como la que sigue
***********
Use Pubs
Go
DECLARE authors_cursor CURSOR
FOR SELECT * FROM authors
OPEN authors_cursor

FETCH NEXT FROM authors_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM authors_cursor
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
****

Cuando lo ejecuto en el analizador de consultas de SQL
funciona perfectamente, pero cuando lo guardo en un
procedimieto almacenado y lo llamo desde mi aplicacion me
retorna solo la primera fila...

Si alguien puede ayudarme, gracias de Antemano

Fabi

Preguntas similare

Leer las respuestas

#1 MAXI
22/11/2004 - 23:47 | Informe spam
Hola, para que buscas usar cursores? no son nada buenos.

Si me decis que queres resolver te vamos a ayudar a hacerlo sin cursores :)

De todas formas, fijate de ejecutar el SP desde el QueryAnalizer y ver que
pasa




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"" escribió en el
mensaje news:873301c4d0e3$d25fbde0$
Saludos Grupo!

Necesito crar una consulta como la que sigue
***********
Use Pubs
Go
DECLARE authors_cursor CURSOR
FOR SELECT * FROM authors
OPEN authors_cursor

FETCH NEXT FROM authors_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM authors_cursor
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
****

Cuando lo ejecuto en el analizador de consultas de SQL
funciona perfectamente, pero cuando lo guardo en un
procedimieto almacenado y lo llamo desde mi aplicacion me
retorna solo la primera fila...

Si alguien puede ayudarme, gracias de Antemano

Fabi
Respuesta Responder a este mensaje
#2 Paulino Padial
22/11/2004 - 23:58 | Informe spam
Una pregunta, ¿ Te devuelve solo la ultima fila ? , puede ser que vayan por
ahi los tiros ;-)


"" escribió en el
mensaje news:873301c4d0e3$d25fbde0$
Saludos Grupo!

Necesito crar una consulta como la que sigue
***********
Use Pubs
Go
DECLARE authors_cursor CURSOR
FOR SELECT * FROM authors
OPEN authors_cursor

FETCH NEXT FROM authors_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM authors_cursor
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
****

Cuando lo ejecuto en el analizador de consultas de SQL
funciona perfectamente, pero cuando lo guardo en un
procedimieto almacenado y lo llamo desde mi aplicacion me
retorna solo la primera fila...

Si alguien puede ayudarme, gracias de Antemano

Fabi
Respuesta Responder a este mensaje
#3 K
23/11/2004 - 01:31 | Informe spam
De hecho, si revisas los resultados de tu cursor, hace un fetch linea por
linea, como si hicieras un SELECT por renglón

Si creas el SP y lo ejecutas desde QA, debe traerte exactamente el mismo
resultado (una especie de query multiple), al parecer al no descargar los
valores en variables, el CURSOR lo toma como consultas completas

Y supongo que si eso lo estás capturando con ADO, por eso solo te regresa un
resultset

En realidad no entendí bien cual es tu tirada con ese CURSOR, me parece que
puedes lograr la funcionalidad necesaria sin uso del mismo, los CURSORES no
son malos usados correctamente, te ayudar a agilizar procesos, pero mal
usados, si representan un riesgo enorme, especialmente en performance, así
que mejor dejalos para cuando todo lo demás atenta de forma mas
comprometedora en tu sistema.

Si nos especificas que necesitas hacer, será mas facil apuntarte en la dir
para solucionar tu problema

K'

"Paulino Padial" wrote in message
news:%23X$
Una pregunta, ¿ Te devuelve solo la ultima fila ? , puede ser que vayan


por
ahi los tiros ;-)


"" escribió en


el
mensaje news:873301c4d0e3$d25fbde0$
> Saludos Grupo!
>
> Necesito crar una consulta como la que sigue
> ***********
> Use Pubs
> Go
> DECLARE authors_cursor CURSOR
> FOR SELECT * FROM authors
> OPEN authors_cursor
>
> FETCH NEXT FROM authors_cursor
> WHILE @@FETCH_STATUS = 0
> BEGIN
> FETCH NEXT FROM authors_cursor
> END
> CLOSE authors_cursor
> DEALLOCATE authors_cursor
> ****
>
> Cuando lo ejecuto en el analizador de consultas de SQL
> funciona perfectamente, pero cuando lo guardo en un
> procedimieto almacenado y lo llamo desde mi aplicacion me
> retorna solo la primera fila...
>
> Si alguien puede ayudarme, gracias de Antemano
>
> Fabi


Respuesta Responder a este mensaje
#4 MAXI
23/11/2004 - 01:51 | Informe spam
Hola, podrias ampliar un poco en que te basas que los cursores ayudan? yo
considero que son muy malos para tareas de produccion y que se usan porque
es mas facil :(

Te cuento mas, hace unos dias tuve una linda discusion con arquitectos .net
sobre este tema y demostre que el uso de cursores es patetico para cualquier
cosa




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"K'" escribió en el mensaje
news:
De hecho, si revisas los resultados de tu cursor, hace un fetch linea por
linea, como si hicieras un SELECT por renglón

Si creas el SP y lo ejecutas desde QA, debe traerte exactamente el mismo
resultado (una especie de query multiple), al parecer al no descargar los
valores en variables, el CURSOR lo toma como consultas completas

Y supongo que si eso lo estás capturando con ADO, por eso solo te regresa
un
resultset

En realidad no entendí bien cual es tu tirada con ese CURSOR, me parece
que
puedes lograr la funcionalidad necesaria sin uso del mismo, los CURSORES
no
son malos usados correctamente, te ayudar a agilizar procesos, pero mal
usados, si representan un riesgo enorme, especialmente en performance, así
que mejor dejalos para cuando todo lo demás atenta de forma mas
comprometedora en tu sistema.

Si nos especificas que necesitas hacer, será mas facil apuntarte en la dir
para solucionar tu problema

K'

"Paulino Padial" wrote in message
news:%23X$
Una pregunta, ¿ Te devuelve solo la ultima fila ? , puede ser que vayan


por
ahi los tiros ;-)


"" escribió en


el
mensaje news:873301c4d0e3$d25fbde0$
> Saludos Grupo!
>
> Necesito crar una consulta como la que sigue
> ***********
> Use Pubs
> Go
> DECLARE authors_cursor CURSOR
> FOR SELECT * FROM authors
> OPEN authors_cursor
>
> FETCH NEXT FROM authors_cursor
> WHILE @@FETCH_STATUS = 0
> BEGIN
> FETCH NEXT FROM authors_cursor
> END
> CLOSE authors_cursor
> DEALLOCATE authors_cursor
> ****
>
> Cuando lo ejecuto en el analizador de consultas de SQL
> funciona perfectamente, pero cuando lo guardo en un
> procedimieto almacenado y lo llamo desde mi aplicacion me
> retorna solo la primera fila...
>
> Si alguien puede ayudarme, gracias de Antemano
>
> Fabi






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida