PREGUNTAS Y RESPUESTAS-En que situaciones se debe usar cursores?

Esta semana llegó esta consulta a mi correo y esto fue lo que contesté. Están de acuerdo conmigo?

En que situaciones se debe usar cursores, siempre he leído que no es recomendable usar cursores que se debe evitar, pero cuando se debe usar cursores?

En las primeras versiones de SQL no se recomendaba sus uso por que no funcionaban muy bien y además la gente los implementaba mal, por eso se hicieron mala fama. Pero a partir de la versión 2005 se pueden usar en los casos en que se requiera procesar registros línea por línea (row by row procesing), pero teniendo en cuenta lo siguiente:

1. Antes de usar cursores buscar tratar los datos mediante querys. Es decir, operaciones de conjunto de datos. Puedes usar querys recursivos y desde la versión 2012 existen las Funciones de Ventana que permiten hacer cálculos para evitar usar cursores. En estos links puedes encontrar más información:

https://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
https://msdn.microsoft.com/es-es/library/ms189461(v=sql.110).aspx

2. Trata de usar cursores estáticos de solo avance. Son los que menos impactan en el uso de memoria. Aquí un par de links al respecto:

https://technet.microsoft.com/es-es/library/ms188644(v=sql.105).aspx
https://msdn.microsoft.com/es-es/library/ms180169(v=sql.120).aspx

3. Es muy importante implementarlos bien, de modo que luego de usar el cursor este sea cerrado y desalojado de la memoria. Para asegurar ese comportamiento se deben usar bloques TRY y CATCH para el manejo de excepciones. De modo que si el código que usa el cursos falla, en el bloque CATCH te aseguras que el cursos se cierre y se retire de la memoria.

https://msdn.microsoft.com/es-es/library/ms175976(v=sql.120).aspx

Deja un comentario

Tu dirección de correo electrónico no será publicada.