Una de las recomendaciones más tópicas a la hora de escribir scripts en T-SQL es la de eliminar el empleo de cursores siempre que sea posible.
Brad McGehee en sql-server-performance.com habla del tema. Y aunque menciona el uso de WHILE como alternativa al cursor no pone ningún modelo como ejemplo
declare @loop int create table #test (clave int identity(1,1) not null, dbname varchar (60)) insert into #test select name from master..sysdatabases SET @counter= 1 SELECT @dbname = rtrim(dbname) FROM #test WHERE clave = @counter print @dbname SET @counter = @counter +1 Select * from #test DROP TABLE #test |
declare @counter int declare @dbname varchar (60) create table #testcur (dbname varchar (60)) begin print @dbname fetch next from dbcursor into @dbname end close dbcursor deallocate dbcursor drop table #testcur |
1 comentario:
quisiera saber como harias que se evalue el valor de un campo por cada registro para aplicarlo en un procedmiento almacenado, en cursores encontre un ejemplo pero la performance es muy deficiente.
Publicar un comentario