Hola a todos,
En primer lugar perdona por indicar urgente, pero es que voy contra-reloj en
un proyecto, y ahora me surge un problema que no logro ver.
Tras llevar un tiempo probando este script en SQL Server 2005, ahora
necesito ejecutarlo en SQL Server 2000, y me he llevado la sorpresa de que
me da el siguiente error:
Mens. 16929, Nivel 16, Estado 1, Línea 15
El cursor es READ ONLY.
Se terminó la instrucción.
Además no tengo la aydua de SQL Server 2000, si alguien me puede indicar
cual es el problema le estaré muy agradecido.
declare @Id int, @PK char(75), @PKant char(75), @dup int
declare CurDuplicados cursor local forward_only
for select Id, PK
from tmpGasoleoProf01
where PK in(select PK from dbo.tmpGasoleoProf01
group by PK having count(*) > 1)
order by PK
open CurDuplicados
fetch next from CurDuplicados into @Id, @PK
while @@fetch_status = 0 begin
set @PKant = @PK
set @dup = 0
while @@fetch_status = 0 and @PK = @PKant begin
set @dup = @dup + 1
update tmpGasoleoProf01
set PK = left(@PK, 73) + right(rtrim('00' + cast(@dup as char(2))), 2)
where current of CurDuplicados
fetch next from CurDuplicados into @Id, @PK
end
end
close CurDuplicados
deallocate CurDuplicados
Además este otro cursor, que en principio es igual si que me funciona en
2005 y 2000:
declare @PK char(75), @Hora char(4)
declare CurHora cursor local forward_only
for select PK, hora
from tmpGasoleoProf01
where hora = ''
open CurHora
fetch next from CurHora into @PK, @Hora
while @@fetch_status = 0 begin
update tmpGasoleoProf01
set Hora = right(rtrim('00' + cast(cast( RAND() * 24 as int) as char(2))),
2) +
right(rtrim('00' + cast(cast( RAND() * 60 as int) as char(2))), 2)
where current of CurHora
fetch next from CurHora into @PK, @Hora
end
close CurHora
deallocate CurHora
Por qué el primero funciona en 2005 y no en 2000 y el segundo funciona bien
en 2005 y 2000, cuando son iguales (salvo que hacen actualizaciones
diferentes) ?
Muchas gracias
Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server / MCTS: SQL Server 2005]
www.helpdna.net (información sobre SQL Server y .NET)
Y ahora también en www.sqlserverymicrosoft.net
Leer las respuestas