me hizo una pregunta que aquí Using cursor in OLTP databases (SQL server)Pros y contras del uso de un cursor (en el servidor SQL)
donde respondieron diciendo cursores nunca se deben usar las personas.
Creo que los cursores son herramientas muy potentes que deben utilizarse (no creo que Microsoft admita cursores para desarrolladores malos). Supongamos que tiene una tabla donde el valor de una columna en una fila depende del valor de la misma columna en la fila anterior. Si se trata de un proceso final de una sola vez, ¿no cree que usar un cursor sería una opción aceptable?
En la parte superior de mi cabeza puedo pensar en un par de escenarios en los que siento que no debería haber vergüenza al usar los cursores. Por favor, avíseme si ustedes sienten lo contrario.
1> Un proceso final de una vez para limpiar los datos incorrectos que completa la ejecución en pocos minutos. 2> Procesos por lotes que se ejecutan una vez en un período de tiempo prolongado (algo así como una vez al año). Si en los escenarios anteriores, no hay una tensión visible en los otros procesos, ¿no sería irracional pasar más horas escribiendo código para evitar los cursores? En otras palabras, en ciertos casos, el tiempo del desarrollador es más importante que la ejecución de un proceso que casi no tiene impacto en ninguna otra cosa.
En mi opinión, estos serían algunos escenarios en los que debería tratar de evitar el uso del cursor. 1> Un proceso almacenado llamado desde un sitio web al que se puede llamar con mucha frecuencia. 2> Un trabajo SQL que se ejecutaría varias veces al día y consumiría una gran cantidad de recursos.
Creo que es muy superficial hacer una declaración general como "los cursores nunca deben usarse" sin analizar la tarea en cuestión y ponderarla con las alternativas.
Háganme saber sus comentarios.
Parece que Sql Server 2012 admitirá el caso de obtener el valor de la fila anterior de una manera establecida. – automatic
"Un procedimiento almacenado llamado desde un sitio web" es demasiado vago. Si un cursor es la opción más razonable para resolver un problema, y el procedimiento debe ser llamado desde una página web ... –