iscomar001
6/17/2015 - 11:11 PM

Cursor SQLServer

Cursor SQLServer

DECLARE @message VARCHAR(100)

DECLARE <curName,,curName>  CURSOR FOR
SELECT GETDATE()

--CTRL + Shift + M


OPEN <curName,,curName>

FETCH NEXT FROM <curName,,curName>
INTO @var1

IF @@FETCH_STATUS <> 0 BEGIN
	SET @message = 'NO HAR REGISTROS'
	PRINT @message
END

WHILE @@FETCH_STATUS = 0 BEGIN
	
			
	FETCH NEXT FROM <curName,,curName>
	INTO @var1
END

CLOSE <curName,,curName>;
DEALLOCATE <curName,,curName>;

--VALIABLES TO USE
DECLARE @registroActual INT = 1;--Contador	 
DECLARE @numRegistros INT;		--Numero registros tabla
DECLARE @col1 VARCHAR(10);		--Columna 1 para usar 
DECLARE @col2 VARCHAR(10);		--Columna 2 para usar

--CREATE TABLE TEMP
CREATE TABLE #tmpTable (
	id INT IDENTITY, 
	col1 VARCHAR(10), 
	col2 VARCHAR(10)
)

--Se insertan los registros
INSERT INTO #tmpTable(col1,col2)
SELECT 'TE1S', 'TE21' UNION ALL
SELECT 'TE1S', 'TE21' UNION ALL
SELECT 'TE1S', 'TE21' UNION ALL
SELECT 'TE1S', 'TE21' UNION ALL
SELECT 'TE1S', 'TE21' 

--Numero Registros de la tabla temporal
SELECT @numRegistros = COUNT(id)
FROM #tmpTable

IF @numRegistros IS NULL OR @numRegistros = 0 BEGIN
	PRINT 'NO HAY REGISTROS'
END 
--Inicio loop
WHILE @registroActual <= @numRegistros BEGIN
    --SELECCION DE REGISTRO ACTUAL
    SELECT 
		@col1 = col1, 
		@col2 = col2 
	FROM #tmpTable 
		WHERE id = @registroActual

	--SE EJECUTA STATMENT
	PRINT 'Col1: ' + @col1 + '  -  Col2: ' + @col2 
    
    SET @registroActual = @registroActual + 1
END

DROP TABLE #tmpTable