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

sobre cursores..

Estas en el tema de sobre cursores.. en el foro de Bases de Datos General en Foros del Web. hola foreros...!!! les cuento que soy novato en esto, pero hay que aprender no... jejej se dice que los cursores en sql server sirven para ...
  #1 (permalink)  
Antiguo 28/04/2005, 21:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 42
Antigüedad: 19 años, 8 meses
Puntos: 0
Sonrisa sobre cursores..

hola foreros...!!!

les cuento que soy novato en esto, pero hay que aprender no... jejej

se dice que los cursores en sql server sirven para recuperar informacion de la base de datos, sin embargo eso lo podria hacer con un SP y un select dentro de ese SP...
entonces, para que realmente sirven los cursores ??? , cuando se deben utilizar ???, y cual seria la ventaja y desventajas de utilizarlos... espero me hayan entendido..

muchas gracias...
  #2 (permalink)  
Antiguo 29/04/2005, 15:00
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Los cursores te permiten ir añadiendo logica dentro de cada regustro (renglon), pues puedes programar bloques enteros de codigo entre un renglon y otro. Consideralo como un While de un lenguaje de programacion.

Mientras que en un SELECT tienes un conjunto mas limitado de opciones. Su lado malo es que afectan el performance.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 29/04/2005, 18:56
Avatar de axel_mdq  
Fecha de Ingreso: mayo-2004
Ubicación: Mar del Plata
Mensajes: 157
Antigüedad: 20 años, 6 meses
Puntos: 0
Podrías buscar cursores en el foro de base de datos y vas a encontrar muchos threads.
Tiene su desventaja en la performance, pero cuando algo no lo podes hacer con una consulta (por mas compleja que sea) seguro que la podes hacer con un cursor. El ejemplo clásico sería cambiar filas x columnas.
__________________
Saludos,

Alejandro. :adios:
  #4 (permalink)  
Antiguo 02/05/2005, 16:23
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Cita:
El ejemplo clásico sería cambiar filas x columnas.
Como un crosstab de Access? Ese tambien se puede con un select
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 02/05/2005, 20:03
Avatar de axel_mdq  
Fecha de Ingreso: mayo-2004
Ubicación: Mar del Plata
Mensajes: 157
Antigüedad: 20 años, 6 meses
Puntos: 0
No conozco la crossbar de Access. Con respecto al SQL, no creo que puedas hacer con un select intercambiar filas por columnas. Te doy un ejemplo, en una tabla tenes: Anio, mes, valor (2004,1,90;2004,2,78;...;2005,4,51) y vos queres mostrar por año y por mes el valor. No se si se entiende pero sería algo así:
Anio | mes | valor
2004| 1 | 90
2004| 2 | 78
2005| 1 | 51

Año\mes|enero|febrero
2004 | 90 | 78
2005 | 51 | ...

No se ustedes... la forma mas simple que conozco sería con cursores. Con Selects ni idea...
PD: el ejemplo fue "reutilizado" de otro que ví por ahí.. jeje
__________________
Saludos,

Alejandro. :adios:
  #6 (permalink)  
Antiguo 03/05/2005, 14:06
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Código:
SELECT 
	Año,
	SUM(CASE WHEN Mes = 1 THEN valor ELSE 0 END) AS enero,
	SUM(CASE WHEN Mes = 2 THEN valor ELSE 0 END) AS febrero,
	SUM(CASE WHEN Mes = 3 THEN valor ELSE 0 END) AS marzo,
	SUM(CASE WHEN Mes = 4 THEN valor ELSE 0 END) AS abril,
	...
FROM tabla
GROUP BY Año
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #7 (permalink)  
Antiguo 03/05/2005, 19:22
Avatar de axel_mdq  
Fecha de Ingreso: mayo-2004
Ubicación: Mar del Plata
Mensajes: 157
Antigüedad: 20 años, 6 meses
Puntos: 0
... jajjajaa... muy bueno...
Igualmente era un ejemplo simple...
__________________
Saludos,

Alejandro. :adios:
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 14:20.