sin cursores

25/09/2003 - 19:41 por Emerson | Informe spam
estoy intentando llamar desde mis pág .asp a algunos procedimientos
almacenados, estos se estan desmorando porque estoy haciendo abuso de
Cursores

alguien sabe como recorrer una query sin cursores???

Gracias,

Emerson

Preguntas similare

Leer las respuestas

#1 Fernando España
25/09/2003 - 20:33 | Informe spam
Bueno basticamente dependera del diseño y lo que desees hacer
pero si quieres procesar algo por cada registro de una tabla podrias
implementas una UDF.

si nos das mas idea de lo que realizas podemos ayudaret.


Fernando España

el 95% de las instrucciones que precisan de un
CURSOR se puede hacer sin ellos y mas
Eficientemente.--

BRIGADA AINTI-CURSORES
"Emerson" <emerson%leshalles.cl> wrote in message
news:%
estoy intentando llamar desde mis pág .asp a algunos procedimientos
almacenados, estos se estan desmorando porque estoy haciendo abuso de
Cursores

alguien sabe como recorrer una query sin cursores???

Gracias,

Emerson


Respuesta Responder a este mensaje
#2 Emerson
25/09/2003 - 21:19 | Informe spam
1-. qué es eso UDF???
2-. estimado, necesito recorrer una tabla, piensa en algo sencillo como un
select * from TTT
sólo sé o siento que el Cursor es mi recordset para recorrer la tabla
3-. esto nace por los tiempos que estoy gastando y los recursos, y sigo
escuchando que generalmente puedo sacarme los cursores. en general cómo es
la idea para sacármelos.

te agradezco tu colaboración.

Emerson


"Fernando España" wrote in message
news:e7u#
Bueno basticamente dependera del diseño y lo que desees hacer
pero si quieres procesar algo por cada registro de una tabla podrias
implementas una UDF.

si nos das mas idea de lo que realizas podemos ayudaret.


Fernando España

el 95% de las instrucciones que precisan de un
CURSOR se puede hacer sin ellos y mas
Eficientemente.--

BRIGADA AINTI-CURSORES
"Emerson" <emerson%leshalles.cl> wrote in message
news:%
> estoy intentando llamar desde mis pág .asp a algunos procedimientos
> almacenados, estos se estan desmorando porque estoy haciendo abuso de
> Cursores
>
> alguien sabe como recorrer una query sin cursores???
>
> Gracias,
>
> Emerson
>
>


Respuesta Responder a este mensaje
#3 Isaías
25/09/2003 - 21:42 | Informe spam
Con el permiso de James Bond

UDF = Funcion Definida por el Usuario (SQL2000).

Y en cuanto a como recorrer la tabla, estoy de acuerdo con
Fernando, diganos que quiere hacer y recibira muchos
comentarios al respecto.
Respuesta Responder a este mensaje
#4 Emerson
26/09/2003 - 00:00 | Informe spam
ahí voy:
- lo del J. Bond, paso
- lo de UDF... me requerirá un tiempo digerirlo, lo estudiaré, pero primero
lo sencillo.
- lo que quiero hacer es que después de seleccionar (obtener) un grupo de
registros, los quiero utilizar insertando en otra tabla.
Independiente de que me este equivocando en este código, la pregunta general
es cómo sacarme el Cursor:


Set @cursor_empresa = CURSOR FOR
SELECT Emp.Id, EA.Fecha, E.Id, E.Nombre, EA.Nota, A.id, A.nombres +
space(1) + A.apaterno + space(1) + A.amaterno
FROM act_Empresa Emp INNER JOIN act_Alumno A ON Emp.Id = A.IdEmpresa
INNER JOIN act_EvaluacionAlumno EA ON A.id = EA.IdAlumno INNER JOIN
act_Evaluacion E ON EA.IdEv = E.Id
WHERE (DATEDIFF(dd, EA.Fecha, GETDATE()) BETWEEN 1 AND 7)
GROUP BY Emp.Id, EA.Fecha, A.id, A.nombres + SPACE(1) + A.apaterno +
SPACE(1) + A.amaterno, E.Nombre, EA.Nota, E.Id, A.nombres
ORDER BY Emp.Id, EA.Fecha, E.Nombre, A.nombres

select @SP_Error = @@ERROR
if (@SP_Error <>0) goto ON_ERROR

OPEN @cursor_empresa

FETCH next FROM @cursor_empresa INTO @id_empresa, @paso01, @paso02, @paso03,
@paso04, @paso05, @paso06
WHILE (@@fetch_status = 0)
BEGIN

INSERT INTO act_SP_Evaluacion_Resumen VALUES(@cont, getdate(), @id_empresa,
@paso01, @paso02, @paso03, @paso04, @paso05, @paso06)
set @cont = @cont + 1
set @paso_cont = @paso_cont - 1

select @SP_Error = @@ERROR
if (@SP_Error <>0) goto ON_ERROR

FETCH NEXT FROM @cursor_empresa INTO @id_empresa, @paso01, @paso02,
@paso03, @paso04, @paso05, @paso06

END

CLOSE @cursor_empresa
DEALLOCATE @cursor_empresa



Gracias.

Emerson

"Isaías" wrote in message
news:081e01c3839d$223d1b40$
Con el permiso de James Bond

UDF = Funcion Definida por el Usuario (SQL2000).

Y en cuanto a como recorrer la tabla, estoy de acuerdo con
Fernando, diganos que quiere hacer y recibira muchos
comentarios al respecto.
Respuesta Responder a este mensaje
#5 Fernando España
26/09/2003 - 00:40 | Informe spam
No entiendo que hacen tus varialbes

set @cont = @cont + 1
set @paso_cont = @paso_cont - 1




pero si no hacen nada, ni afectan el insert
podrias usar algo como

INSERT act_SP_Evaluacion_Resumen
SELECT Emp.Id, EA.Fecha, E.Id, E.Nombre, EA.Nota, A.id, A.nombres +
space(1) + A.apaterno + space(1) + A.amaterno
FROM act_Empresa Emp INNER JOIN act_Alumno A ON Emp.Id = A.IdEmpresa
INNER JOIN act_EvaluacionAlumno EA ON A.id = EA.IdAlumno INNER JOIN
act_Evaluacion E ON EA.IdEv = E.Id
WHERE (DATEDIFF(dd, EA.Fecha, GETDATE()) BETWEEN 1 AND 7)
GROUP BY Emp.Id, EA.Fecha, A.id, A.nombres + SPACE(1) + A.apaterno +
SPACE(1) + A.amaterno, E.Nombre, EA.Nota, E.Id, A.nombres
ORDER BY Emp.Id, EA.Fecha, E.Nombre, A.nombres




Fernando España

el 95% de las instrucciones que precisan de un
CURSOR se puede hacer sin ellos y mas
Eficientemente.--

BRIGADA AINTI-CURSORES




"Emerson" <emerson%leshalles.cl> wrote in message
news:
ahí voy:
- lo del J. Bond, paso
- lo de UDF... me requerirá un tiempo digerirlo, lo estudiaré, pero


primero
lo sencillo.
- lo que quiero hacer es que después de seleccionar (obtener) un grupo de
registros, los quiero utilizar insertando en otra tabla.
Independiente de que me este equivocando en este código, la pregunta


general
es cómo sacarme el Cursor:


Set @cursor_empresa = CURSOR FOR
SELECT Emp.Id, EA.Fecha, E.Id, E.Nombre, EA.Nota, A.id, A.nombres +
space(1) + A.apaterno + space(1) + A.amaterno
FROM act_Empresa Emp INNER JOIN act_Alumno A ON Emp.Id = A.IdEmpresa
INNER JOIN act_EvaluacionAlumno EA ON A.id = EA.IdAlumno INNER JOIN
act_Evaluacion E ON EA.IdEv = E.Id
WHERE (DATEDIFF(dd, EA.Fecha, GETDATE()) BETWEEN 1 AND 7)
GROUP BY Emp.Id, EA.Fecha, A.id, A.nombres + SPACE(1) + A.apaterno +
SPACE(1) + A.amaterno, E.Nombre, EA.Nota, E.Id, A.nombres
ORDER BY Emp.Id, EA.Fecha, E.Nombre, A.nombres

select @SP_Error = @@ERROR
if (@SP_Error <>0) goto ON_ERROR

OPEN @cursor_empresa

FETCH next FROM @cursor_empresa INTO @id_empresa, @paso01, @paso02,


@paso03,
@paso04, @paso05, @paso06
WHILE (@@fetch_status = 0)
BEGIN

INSERT INTO act_SP_Evaluacion_Resumen VALUES(@cont, getdate(),


@id_empresa,
@paso01, @paso02, @paso03, @paso04, @paso05, @paso06)
set @cont = @cont + 1
set @paso_cont = @paso_cont - 1

select @SP_Error = @@ERROR
if (@SP_Error <>0) goto ON_ERROR

FETCH NEXT FROM @cursor_empresa INTO @id_empresa, @paso01, @paso02,
@paso03, @paso04, @paso05, @paso06

END

CLOSE @cursor_empresa
DEALLOCATE @cursor_empresa



Gracias.

Emerson

"Isaías" wrote in message
news:081e01c3839d$223d1b40$
> Con el permiso de James Bond
>
> UDF = Funcion Definida por el Usuario (SQL2000).
>
> Y en cuanto a como recorrer la tabla, estoy de acuerdo con
> Fernando, diganos que quiere hacer y recibira muchos
> comentarios al respecto.


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