¿Cursor ó While?

07/03/2005 - 16:41 por Víctor | Informe spam
Buenas.

A ver la gente qué opina: ya se que si puedo, mejor que me olvide de los
cursores, así que se me ha ocurrido crear una variable del tipo table, con
el primer campo que sea un autoincrementable, de forma que para recorrer
esta tabla lo que hago es un while, y una consulta con indice = @x; es
decir:

declare @tbl_aux table (indice smallint identity(1, 1), nombre varchar(10),
apellido1 varchar(10), apellido2 varchar(10)9
declare @num_filas smallint
declare @x smallint

insert into @tbl_aux
select nom_nombre, nom_apell1, nom_apell2
from tbl_nombres

select @num_filas = count(indice) from @tbl_aux

set @x = 1
while (@x <= @num_filas)
begin
select * from @tbl_aux where indice = @x

set @x = @x + 1
end

¿Es buena idea o es igual de lento?
 

Leer las respuestas

#1 Maxi
07/03/2005 - 16:46 | Informe spam
Hola, para mi es una mala idea y te comento porque

1) Seguis pensando en filas y no conjunto de registros
2) Las variables tipo tabla consumen memoria RAM con lo cual puedes tener
algunos problemas serios, yo las usaria para casos muy especificos


Salu2
Maxi


"Víctor" escribió en el mensaje
news:
Buenas.

A ver la gente qué opina: ya se que si puedo, mejor que me olvide de los
cursores, así que se me ha ocurrido crear una variable del tipo table, con
el primer campo que sea un autoincrementable, de forma que para recorrer
esta tabla lo que hago es un while, y una consulta con indice = @x; es
decir:

declare @tbl_aux table (indice smallint identity(1, 1), nombre
varchar(10),
apellido1 varchar(10), apellido2 varchar(10)9
declare @num_filas smallint
declare @x smallint

insert into @tbl_aux
select nom_nombre, nom_apell1, nom_apell2
from tbl_nombres

select @num_filas = count(indice) from @tbl_aux

set @x = 1
while (@x <= @num_filas)
begin
select * from @tbl_aux where indice = @x

set @x = @x + 1
end

¿Es buena idea o es igual de lento?



Preguntas similares