Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   sobre cursores.. (http://www.forosdelweb.com/f21/sobre-cursores-293397/)

HARRY_POTTER 28/04/2005 21:07

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... :pensando:

Mithrandir 29/04/2005 15:00

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.

axel_mdq 29/04/2005 18:56

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.

Mithrandir 02/05/2005 16:23

Cita:

El ejemplo clásico sería cambiar filas x columnas.
Como un crosstab de Access? Ese tambien se puede con un select

axel_mdq 02/05/2005 20:03

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... :ojotes:
PD: el ejemplo fue "reutilizado" ;-) de otro que ví por ahí.. :pirata: jeje

Mithrandir 03/05/2005 14:06

;-)
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


axel_mdq 03/05/2005 19:22

:si: ... jajjajaa... muy bueno...
Igualmente era un ejemplo simple... :serio:


La zona horaria es GMT -6. Ahora son las 18:51.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.