Este exemplo mostra como trabalhar com um cursor sobre uma tabela
Estrutura da tabela
CREATE TABLE [dbo].[Artigos]( [ID] [int] IDENTITY(1,1) NOT NULL, [Marca] [varchar](50) NOT NULL, [Modelo] [varchar](50) NOT NULL, [Descr] [varchar](max) NULL, CONSTRAINT [PK_Artigos] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END
Código
--Variáveis necessárias para armazenar cada linha da tabela DECLARE @ID Int, @Marca VarChar (50), @Modelo VarChar (50), @Descr VarChar (MAX) --Declara um novo cursor sobre a query indicada DECLARE _Cursor CURSOR FOR SELECT * FROM Artigos OPEN _Cursor --Posiciona-se na primeira linha FETCH NEXT FROM _Cursor INTO @ID, @Marca, @Modelo, @Descr WHILE (@@FETCH_STATUS = 0)--'@@FETCH_STATUS = 0' significa que ainda existem registos que não foram percorridos BEGIN --Efectua as operações desejadas aqui PRINT '-----' PRINT 'ID: ' + CONVERT(VarChar, @ID) PRINT 'Marca: ' + @Marca PRINT 'Modelo: ' + @Modelo PRINT 'Descr: ' + @Descr PRINT '-----' --No final posiciona-se o cursor na próxima linha FETCH NEXT FROM _Cursor INTO @ID, @Marca, @Modelo, @Descr END --Deve-se sempre fechar CLOSE _Cursor --Limpa a memoria DEALLOCATE _Cursor
Escrito por Caça