El documento explica los pasos para declarar, abrir, recorrer, cerrar y desalojar un cursor en SQL Server. Un cursor permite recorrer fila a fila y leer o modificar un conjunto de datos definido por una consulta T-SQL. Los pasos incluyen declarar el cursor con la consulta, abrirlo para cargar los datos, recorrerlo fila a fila, cerrarlo para liberar los registros y desalojarlo para eliminar la referencia.
SQL Server cursores: declaración, apertura, cierre y desalojo
1.
2.
3. En SQL Server un cursor puede
definirse como un elemento que
representará a un conjunto de datos
determinado por una consulta T-SQL,
el cursor permitirá recorrer fila a fila,
leer y eventualmente modificar dicho
conjunto de resultados.
4. DECLARACIÓN:
El primer paso constará de la
declaración del cursor, donde se
indicarán (junto con el nombre del
cursor) la consulta que el mismo
representará y algunas otras
características bastante interesantes.
5. APERTURA:
La apertura del cursor ejecutará la
consulta definida en el paso previo y
cargará los datos en el mismo. La
función OPEN de T-SQL permitirá
efectuar esta terea, para continuar
con el ejemplo previo la forma de
abrir el cursor será la siguiente:
6. CIERRE:
En el cierre del cursor se liberarán los
registros tomados por el mismo. Una
vez que el cursor es cerrado ya no
podrá recorrerse el conjunto de
resultados hasta que el mismo sea
reabierto, la sentencia CLOSE
cerrará un cursor abierto.
7. DESALOJO:
Este paso eliminará la referencia
al cursor definido previamente,
por lo que ya no será posible
realizar una reapertura del mismo.
8. DECLARE @COL1 VARCHAR(50),@COL2 VARCHAR(30),@COL3 VARCHAR(30),@COL4 INT
--DECLARACION DEL CURSOR
DECLARE C_ALUMNO_HERMANOS CURSOR FOR
SELECT Nombres,ApellidoPaterno,ApellidoMaterno,NroHermanos FROM Alumno
WHERE NroHermanos>0
--ABRIR DATOS
OPEN C_ALUMNO_HERMANOS
--LISTAR DATOS
FETCH C_ALUMNO_HERMANOS INTO @COL1,@COL2,@COL3,@COL4
WHILE(@@FETCH_STATUS=0)
BEGIN
PRINT @COL1 +' | '+ @COL2+' | '+@COL3+' | '+RTRIM(STR(@COL4))
FETCH C_ALUMNO_HERMANOS INTO @COL1,@COL2,@COL3,@COL4
END
--CERRAR CURSOR
CLOSE C_ALUMNO_HERMANOS
--DESALOJAR
DEALLOCATE C_ALUMNO_HERMANOS
EJEMPLO:
9. CONCLUSIÓN:
Los cursores son muy útiles sobre todo cuando no
podemos tener todas las columnas que
necesitamos en un solo SELECT. Si podemos
tener a todas las columnas en un solo SELECT
puede ser más práctico usar el comando SELECT
… INTO
Como el Firebird nos permite tener abiertos dos,
tres, o más cursores al mismo tiempo entonces
podemos extraer de cada uno de ellos las
columnas que necesitamos para procesarlas.