Emular um Cursor SQL com um Loop
Método para emular o típico cursor sql com um loop em SQL Server 2000.Por Pol Salvat
Publicado em: 26/2/08
Graças a este truque de SQL Server 2000 você poderá emular o funcionamento de um cursor com um loop.
Para isso criaremos uma tabela temporária onde colocaremos os elementos que queremos iterar no loop para poder tratá-los.
DECLARE
@Anuncios
TABLE
(
pk_id numeric(18, 0) NOT NULL IDENTITY (1, 1),
Idtruco numeric(18,0),
IdUsuario numeric(18,0),
Alias nvarchar(255),
usuario nvarchar(255)
)
Criamos duas variáveis para poder iterar no loop
DECLARE
@Rows numeric,
@i numeric(18,0)
SET @Rows=0
SET @i=1
Inserimos os dados na tabela temporária @anuncios
INSERT INTO
@Anuncios
(
Idtruque,
IdUsuario,
Alias,
Usuario
)
SELECT
a.ARTID,
a.ARTUSR,
p.Alias,
p.LonUsr
FROM
TABELA_ANUNCIOS a
INNER JOIN
TABELA_USUARIOS p
ON a.ARTUSR=p.LONID
Atribuímos à variável contadora de filas totais o total da tabela @anuncios
Set @Rows=(SELECT TOP 1 PK_ID FROM @Anuncios order BY PK_ID DESC)
Iteramos com o while. Desta maneira podemos emular o funcionamento de um cursor sem ser um cursor, podendo executá-lo as vezes que quisermos de uma só vez.
WHILE @i <;= @Rows
BEGIN
Declare
@Idtruco numeric(18,0),
@IdUsuario numeric(18,0),
@Alias nvarchar(255),
@Usuario nvarchar(255)
SELECT
@Idtruque=Idtruque,
@IdUsuario=IdUsuario,
@Alias=Alias,
@Usuario=Usuario
FROM
@Anuncios
WHERE
pk_id=@i
Realizar todas as ações!
SET @i=@i + 1
END