eliminar Cursor..¿?

28/08/2003 - 00:18 por Emerson | Informe spam
siempre les leo que es posible eliminar los cursores, pero no veo como
hacerlo... es por medio de alguna query más poderosa, por sentencias que no
conozco (otra dimensión, desconocida???)
sólo bromeo, la idea aprender a ver las posibilidades de desprenderme de los
cursores, si es necesario.

aquí va uno, no sé si se puede traducir a algo sin cursor:

Set @cont = 1
Set @cursor_empresa = CURSOR FOR SELECT id FROM act_Empresa
OPEN @cursor_empresa

FETCH next FROM @cursor_empresa INTO @id_empresa /*lo tengo afuera porque
adentro me daba algunos problemas*/

WHILE (@@fetch_status = 0)
BEGIN

SELECT @paso_cont = COUNT(A.id)
FROM act_Alumno A INNER JOIN act_EvaluacionAlumno EA ON A.id EA.IdAlumno INNER JOIN act_Evaluacion E ON EA.IdEv = E.Id
WHERE (A.idempresa = @id_empresa)

set @cont = @cont + 1
FETCH NEXT FROM @cursor_empresa INTO @id_empresa
end
END

CLOSE @cursor_empresa
DEALLOCATE @cursor_empresa


Muy agredecido, desde ya.

Emerson

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
28/08/2003 - 08:27 | Informe spam
Emerson, sinceramente no sé qué es lo que estás intentando hacer en ese
script: abres un cursor para ir contando el nº de registros por cada una de
las empresas cuando eso lo puedes hacer con una consulta de agregados (GROUP
BY A.idEmpresa); por otro lado vas sumando uno a una variable por cada una
de las pasadas que da el cursor, cuando eso lo que es en realidad es el nº
de registros (ROWCOUNT) de la sentencia que te acabo de comentar...

¿Podrías explicar un poco más qué es lo que pretendes conseguir con ese
cursor?.

P.D.: se aprecia la inclusión de sentencias DDL y si también pones
algunos registros de ejemplos, mejor que mejor. Será más sencillo ayudarte



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Emerson" escribió en el mensaje
news:
siempre les leo que es posible eliminar los cursores, pero no veo como
hacerlo... es por medio de alguna query más poderosa, por sentencias que


no
conozco (otra dimensión, desconocida???)
sólo bromeo, la idea aprender a ver las posibilidades de desprenderme de


los
cursores, si es necesario.

aquí va uno, no sé si se puede traducir a algo sin cursor:

Set @cont = 1
Set @cursor_empresa = CURSOR FOR SELECT id FROM act_Empresa
OPEN @cursor_empresa

FETCH next FROM @cursor_empresa INTO @id_empresa /*lo tengo afuera porque
adentro me daba algunos problemas*/

WHILE (@@fetch_status = 0)
BEGIN

SELECT @paso_cont = COUNT(A.id)
FROM act_Alumno A INNER JOIN act_EvaluacionAlumno EA ON A.id > EA.IdAlumno INNER JOIN act_Evaluacion E ON EA.IdEv = E.Id
WHERE (A.idempresa = @id_empresa)

set @cont = @cont + 1
FETCH NEXT FROM @cursor_empresa INTO @id_empresa
end
END

CLOSE @cursor_empresa
DEALLOCATE @cursor_empresa


Muy agredecido, desde ya.

Emerson


Respuesta Responder a este mensaje
#2 Emerson
28/08/2003 - 15:28 | Informe spam
Carlos, gracias... deja revisar esto de rowcount y mejorar la sentencia,
haber si funciona.

Emerson

"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> wrote in message
news:

Emerson, sinceramente no sé qué es lo que estás intentando hacer en


ese
script: abres un cursor para ir contando el nº de registros por cada una


de
las empresas cuando eso lo puedes hacer con una consulta de agregados


(GROUP
BY A.idEmpresa); por otro lado vas sumando uno a una variable por cada una
de las pasadas que da el cursor, cuando eso lo que es en realidad es el nº
de registros (ROWCOUNT) de la sentencia que te acabo de comentar...

¿Podrías explicar un poco más qué es lo que pretendes conseguir con


ese
cursor?.

P.D.: se aprecia la inclusión de sentencias DDL y si también pones
algunos registros de ejemplos, mejor que mejor. Será más sencillo ayudarte



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"Emerson" escribió en el mensaje
news:
> siempre les leo que es posible eliminar los cursores, pero no veo como
> hacerlo... es por medio de alguna query más poderosa, por sentencias que
no
> conozco (otra dimensión, desconocida???)
> sólo bromeo, la idea aprender a ver las posibilidades de desprenderme de
los
> cursores, si es necesario.
>
> aquí va uno, no sé si se puede traducir a algo sin cursor:
>
> Set @cont = 1
> Set @cursor_empresa = CURSOR FOR SELECT id FROM act_Empresa
> OPEN @cursor_empresa
>
> FETCH next FROM @cursor_empresa INTO @id_empresa /*lo tengo afuera


porque
> adentro me daba algunos problemas*/
>
> WHILE (@@fetch_status = 0)
> BEGIN
>
> SELECT @paso_cont = COUNT(A.id)
> FROM act_Alumno A INNER JOIN act_EvaluacionAlumno EA ON A.id > > EA.IdAlumno INNER JOIN act_Evaluacion E ON EA.IdEv = E.Id
> WHERE (A.idempresa = @id_empresa)
>
> set @cont = @cont + 1
> FETCH NEXT FROM @cursor_empresa INTO @id_empresa
> end
> END
>
> CLOSE @cursor_empresa
> DEALLOCATE @cursor_empresa
>
>
> Muy agredecido, desde ya.
>
> Emerson
>
>


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