miércoles, 25 de septiembre de 2013

Cómo emular un Cursor SQL con un Bucle

Gracias a este truco de SQL Server 2000 podrás emular el funcionamineto de un cursor con un bucle.
Para ello crearemos una tabla temporal donde le pondremos los elementos que queremos iterar en el bucle para poderlos tratar.

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)
)
Creamos dos variables para poder iterar en el bucle 
DECLARE
@Rows numeric,
@i numeric(18,0)

SET @Rows=0
SET @i=1


Insertamos los datos en la tabla temporal @anuncios

INSERT INTO
@Anuncios
(
Idtruco,
IdUsuario,
Alias,
Usuario
)
SELECT
a.ARTID,
a.ARTUSR,
p.Alias,
p.LonUsr
FROM
TABLA_ANUNCIOS a
INNER JOIN
TABLA_USUARIOS p
ON a.ARTUSR=p.LONID

Asignamos a la variable contadora de filas totales el total de la tabla @anuncios

Set @Rows=(SELECT TOP 1 PK_ID FROM @Anuncios order BY PK_ID DESC)

Iteramos con el while. De esta manera podemos emular el funcionamiento de un cursor sin ser un cursor, pudiéndolo ejecutar las veces que queramos a la vez.

WHILE @i <;= @Rows
BEGIN
Declare
@Idtruco numeric(18,0),
@IdUsuario numeric(18,0),
@Alias nvarchar(255),
@Usuario nvarchar(255)

SELECT
@Idtruco=Idtruco,
@IdUsuario=IdUsuario,
@Alias=Alias,
@Usuario=Usuario
FROM
@Anuncios
WHERE
pk_id=@i
Realizar todas las acciones!

SET @i=@i + 1
END

Fuente: enlace

No hay comentarios:

Publicar un comentario

Entradas populares