He de comentar que realmente he comprobado dicha frase, y es más también puedo decir que la diferencia entre usar cursores y es mucha, Sobre todo en cuanto a tiempo de proceso hablamos.
Pero menos rollo y vamos al tema:
- Primero lo declaramos, le daremos un nombre (para el ejemplo lo llamares cr1) y prepararemos la select que usaremos para seleccionar la información que queremos. DECLARE CR1 CURSOR LOCAL FOR SELECT CAMPO1,CAMPO2 FROM TABLA
- Fijaos que aunque usamos DECLARE, el nombre de la variable no lleva la arroba (@).
- Deberemos declarar las variables que usaremos para almacenar el valor de los campos. DECLARE @CAMPO1, @CAMPO2 INT
- Se declararan tantas variables como campos tengamos en la select.
- Ya podemos abrir el cursor OPEN CR1
- Y Movemos el cursor al primer registro, los valores los almacenaremos en las variables declaradas y el orden de los campos debe ser el mismo que en la select.
- FETCH NEXT FROM RS INTO @CAMPO1, @CAMPO2
- Ya podemos empezar el bucle de recorrido del cursor:
WHILE @@FETCH_STATUS = 0
BEGIN
PROCESOS ----
FETCH NEXT FROM CR1 INTO @CAMPO1, @CAMPO2
END
- No se debe olvidar de cerrar el cursor (CLOSE CR1) y liberar de la memoria el cursor (DEALLOCATE CR1).
El tema de cursores se puede complicar más, por ejemplo el @@fetch_status puede tener diferentes valores y el cursor se puede mover adelante y atrás. Pero esto lo explicare en otro artículo. ;)
No hay comentarios:
Publicar un comentario