Cursor MS-SQL
Su estructura es la siguiente:
--Creamos una tabla temporal donde guardar los registros | |
--que el cursor nos traiga | |
DECLARE @temporal TABLE (dato1 INT, dato2 VARCHAR(20)) | |
--Declaramos una variable para guardar los nombres | |
DECLARE @Nombre VARCHAR(20) | |
--Declaramos el cursor de nombre 'db_cursor' | |
DECLARE db_cursor CURSOR FOR | |
--Este cursor va a levantar todos los Id´s y nombres de clientes | |
SELECT Id, Nombre FROM Clientes WHERE Condiciones | |
--Se abre el cursor | |
OPEN db_cursor | |
--Con FetchNext, obtenemos el siguiente registro | |
FETCH NEXT FROM db_cursor | |
--Y lo guardamos en la tabla en memoria | |
--Si se quiere guardar los registros derecho a una tabla, | |
--la cantidad de campos de la tabla debe ser mayor o igual | |
--a la cantidad de campos levantados | |
INTO @temporal | |
WHILE @@FETCH_STATUS = 0 | |
--También se puede guardar en una variable, si levantamos | |
--un solo campo con el cursor. | |
BEGIN | |
--Acá podemos trabajar con los datos que levantamos, el código | |
--después del begin se va a ejecutar por cada registro que levante | |
--el select del cursor. | |
SET @Algo = (SELECT algo FROM algunaTabla WHERE condiciones) | |
--Irreverencias de ejemplo: | |
INSERT INTO AlgunaTabla VALUES(@Variable1, @Variable2) | |
--Obtenemos el siguiente registro: | |
FETCH NEXT FROM db_cursor | |
INTO @temporal | |
END | |
--se cierra el cursor: | |
CLOSE Recorredor | |
DEALLOCATE Recorredor |
Comments are closed here.