Trucos de Sql Server 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


Comentarios sobre Emular un Cursor SQL con un Bucle


Rene dice:

Muy bueno, pero ¿es compatible con ACCESS?. Saludos
Comentario publicado 24/01/2010 19:29:00
Dejar un comentario

Nombre:

Mail:

Web:

Comentario: