Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/04/2010, 16:40
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Respuesta: Problema con cursor

Para reemplazar a los cursores, debes emplear todas las herramientas que tengas a mano. Se supone que cuando realizamos operaciones en las bases de datos, estamos pensando en términos de conjuntos. Un cursor es llevar la mentalidad de programación estructurada a la base de datos.
No debes pensar en lo que harás en cada fila, sino lo que le harás a las columnas.
Por supuesto que una CTE será útil para reemplazar ciertos tipos de cursores pero no por si sólo. Por ejemplo, para realizar cálculos recursivos. Pero tienes a mano nuevas opciones, como son los operadores CROSS APPLY y OUTER APPLY. Tienes a mano también viejas técnicas como tablas de lookup y la famosa tabla de Números.
Mi recomendación, si el desarrollo eficiente de bases de datos te interesa es que consigas buen material de estudio. Por ejemplo, "SQL for Smarties" de Joe Celko, o "Inside SQL Server: TSQL Queryng" de Itzik Ben Gan.
Por cierto, a veces la única opción viable es un cursor. Pero cuando eso me ocurre, prefiero entregar los datos a procesar a la aplicación, e implementar allí la lógica que hubiera usado en el cursor.

Saludos.