Buscar en el sitio

Contacto

Danny

962318754

blackorwhite_dm@hotmail.com

Emular un Cursor SQL con un Bucle

03.11.2010 01:35

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