Problema con cursor

24/06/2008 - 02:31 por Victor M | Informe spam
Tengo un cursor algo asi
declare cursorx cursor for select
open cursorx
fetch netx from cursorx into @codigo
while @@fetch_status=0
begin
if exists(select top 1 * from tabtemp where codigo=@codigo)
begin
update tabtemp set cantidad=cantidad +1
end
else
begin
insert into tabtemp(codigo,cantidad) values(@codigo,...)
end
end
close cursorx
este codigo es muy sencillo pero es un ejemplo parecido a lo que hago, el
problema es que cuando
hace el if exists(...) nunca encuentra, siendo que el valor si existe no se
si al trabajar haciendo altas y bajas la tabla de cierta manera se bloquea
o algo pasa alguien me pudiera dar una ayudadita
Saludos
Victor M

Preguntas similare

Leer las respuestas

#1 Victor M
24/06/2008 - 02:35 | Informe spam
se que el codigo de que puse esta mal falta el fetch next y falta el where
al actualizar, solo lo puse como ejemplo
"Victor M" escribió en el mensaje
news:%
Tengo un cursor algo asi
declare cursorx cursor for select
open cursorx
fetch netx from cursorx into @codigo
while @@fetch_status=0
begin
if exists(select top 1 * from tabtemp where codigo=@codigo)
begin
update tabtemp set cantidad=cantidad +1
end
else
begin
insert into tabtemp(codigo,cantidad) values(@codigo,...)
end
end
close cursorx
este codigo es muy sencillo pero es un ejemplo parecido a lo que hago, el
problema es que cuando
hace el if exists(...) nunca encuentra, siendo que el valor si existe no
se si al trabajar haciendo altas y bajas la tabla de cierta manera se
bloquea o algo pasa alguien me pudiera dar una ayudadita
Saludos
Victor M

Respuesta Responder a este mensaje
#2 Isaias
24/06/2008 - 19:07 | Informe spam
¿Porque no ejecuta su INSERT y UPDATE por separado, sin ocupar CURSORES?
Saludos
IIslas


"Victor M" wrote:

se que el codigo de que puse esta mal falta el fetch next y falta el where
al actualizar, solo lo puse como ejemplo
"Victor M" escribió en el mensaje
news:%
> Tengo un cursor algo asi
> declare cursorx cursor for select
> open cursorx
> fetch netx from cursorx into @codigo
> while @@fetch_status=0
> begin
> if exists(select top 1 * from tabtemp where codigo=@codigo)
> begin
> update tabtemp set cantidad=cantidad +1
> end
> else
> begin
> insert into tabtemp(codigo,cantidad) values(@codigo,...)
> end
> end
> close cursorx
> este codigo es muy sencillo pero es un ejemplo parecido a lo que hago, el
> problema es que cuando
> hace el if exists(...) nunca encuentra, siendo que el valor si existe no
> se si al trabajar haciendo altas y bajas la tabla de cierta manera se
> bloquea o algo pasa alguien me pudiera dar una ayudadita
> Saludos
> Victor M
>



Respuesta Responder a este mensaje
#3 jcac
25/06/2008 - 00:52 | Informe spam
Hola Victor M,

Si en tu select del cursor utilizas la misma tabla "tabtemp" le tienes que
indicar en la declaracion del cursor que sea READ ONLY sino cada vez que
inserte un codigo a la tabla lo volvera a actualizar y se puede convertir en
algo de nunca acabar. Espero que esto te ayude.

Saludos

Juan Carlos

"Victor M" escribió en el mensaje
news:%
Tengo un cursor algo asi
declare cursorx cursor for select
open cursorx
fetch netx from cursorx into @codigo
while @@fetch_status=0
begin
if exists(select top 1 * from tabtemp where codigo=@codigo)
begin
update tabtemp set cantidad=cantidad +1
end
else
begin
insert into tabtemp(codigo,cantidad) values(@codigo,...)
end
end
close cursorx
este codigo es muy sencillo pero es un ejemplo parecido a lo que hago, el
problema es que cuando
hace el if exists(...) nunca encuentra, siendo que el valor si existe no
se si al trabajar haciendo altas y bajas la tabla de cierta manera se
bloquea o algo pasa alguien me pudiera dar una ayudadita
Saludos
Victor M

Respuesta Responder a este mensaje
#4 Penta
25/06/2008 - 17:16 | Informe spam
Estimado Victor M.
Favor explicanos que tratas de hacer sin llegar al tema del uso de
cursores.
Debe existir una mejor alternativa que esa.

Atte.
Penta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida