Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como se usa un cursor?

Estas en el tema de Como se usa un cursor? en el foro de SQL Server en Foros del Web. digamos tengo el siguiente codigo: DECLARE @COLM1 VARCHAR(1000) DECLARE @COLM2 VARCHAR(1000) DECLARE @COLM3 VARCHAR(1000) DECLARE @COLM4 VARCHAR(1000) DECLARE @COLM5 VARCHAR(1000) DECLARE CURSORPRUEBA CURSOR FOR select ...
  #1 (permalink)  
Antiguo 30/05/2011, 17:24
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años, 1 mes
Puntos: 1
Exclamación Como se usa un cursor?

digamos tengo el siguiente codigo:

DECLARE @COLM1 VARCHAR(1000)
DECLARE @COLM2 VARCHAR(1000)
DECLARE @COLM3 VARCHAR(1000)
DECLARE @COLM4 VARCHAR(1000)
DECLARE @COLM5 VARCHAR(1000)
DECLARE
CURSORPRUEBA CURSOR
FOR
select 1 A,2 B,3 C,4 D,5 E UNION
select 0 A,2 B,0 C,4 D,0 E UNION
select 1 A,2 B,3 C,4 D,5 E UNION
select 1 A,5 B,2 C,4 D,3 E UNION
select 1 A,5 B,4 C,2 D,3 E
OPEN CURSORPRUEBA
FETCH NEXT FROM CURSORPRUEBA
INTO @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
END
CLOSE CURSORPRUEBA
DEALLOCATE CURSORPRUEBA


lo que quería era que esto recorriera la consulta y me botara los datos registro por registro, pero esto se queda en un siclo infinito botando siempre la primera linea, como le digo cual linea bote?
__________________
cuidensen y que arceus los acompanhe
  #2 (permalink)  
Antiguo 30/05/2011, 18:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Como se usa un cursor?

Bueno, en SQL Server, no son recomendados el uso de cursores, aun asi, respondere a tu duda.

Para que "salte" el siguiente registro, necesitas un siguiente FETCH

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
FETCH NEXT FROM CURSORPRUEBA
INTO @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
END
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 31/05/2011, 08:39
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Como se usa un cursor?

hola iislas, hace temas que no veia tus respuestas, pues asi me funciona pero no me vota la primera fila, solo las ultimas 4 de las 5 totales, como lo arreglo?


posdata, porque no es recomendables usar cursores?
__________________
cuidensen y que arceus los acompanhe
  #4 (permalink)  
Antiguo 31/05/2011, 08:58
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Como se usa un cursor?

Sera que te hace falta mostrar el ultimo registro:

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
FETCH NEXT FROM CURSORPRUEBA
INTO @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
END
CLOSE CURSORPRUEBA
DEALLOCATE CURSORPRUEBA
--- Aqui
SELECT @COLM1,@COLM2,@COLM3,@COLM4,@COLM5
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 31/05/2011, 09:29
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Como se usa un cursor?

no, estoy seguro que el primero es el que falta

pero siguiendo la idea seria pasar el selecd de abajo a arriba del fetch, gracias
__________________
cuidensen y que arceus los acompanhe
  #6 (permalink)  
Antiguo 31/05/2011, 11:02
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Como se usa un cursor?

¿Que es lo que pretendes alcanzar?
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 31/05/2011, 13:20
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Como se usa un cursor?

ahora necesito que en ves de un select pueda usar en EXEC para poder ejecutar la consulta que es un varchar un poco grande, es posible?


lo que pretendo es hacer una especie consulta dinámica para un rpt que puede ser muy cambiante por lo que quiero que mi consulta se adapte a lo que aya, por problemas legales no puedo dar mucha info pero la idea es esa, si es posible lo del exec?
__________________
cuidensen y que arceus los acompanhe

Etiquetas: cursor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:16.