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

Valorize este artigo:
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






Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Buscar projetos:

Home | Sobre nós | Copyright | Anuncie | Entrar em contato