none
porque un cursor se cuelga con unos cuantos registros RRS feed

  • Pregunta

  • utilizo el sig cursor para condicionar un update a una tabla, fue preciso hacerlo con cursor xq no existe una relacion directa entre mis tablas . Declaro lo sig
    DECLARE @ProcSolicitadoID BIGINT,@ProcClave varchar(20),@ProcImporte MONEY,@NivelSE_ID BIGINT
    DECLARE @Table TABLE(ProcSolicitadoID BIGINT,ProcSolicitadoImp money,ProcSolicitadoNivelSEID BIGINT)
    DECLARE AjustaCosto CURSOR FOR -- Variable para cursor
    SELECT PS.ProcSolicitadoID,PS.ProcClave, PS.ProcSolicitadoImporte , Pacientes.NivelID FROM ProcSolicitados PS INNER JOIN Pacientes ON ....... INNER JOIN NivelSocioEconomico ON ......= ...
    WHERE  PS.ProcSolicitadoFechaRealiz>'2016/10/06 00:00:00'
    
    OPEN AjustaCosto
    FETCH NEXT FROM AjustaCosto --muevo al registro
    INTO @ProcSolicitadoID,@ProcClave, @ProcImporte ,@NivelSE_ID
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
    DECLARE @Costo MONEY
    SET @Costo=(SELECT CuotasImporte FROM CuotasProced WHERE ProcClave=@ProcedimientosClave and NivelSE_ID=@NivelSE_ID)
    -- Comparo costo tblaA vs costo Consulta
    IF @Costo<>@ProcImporte
    begin
      UPDATE ProcSolicitados SET ProcSolicitadoImporte=@Costo,ProcSolicitadoImporte=@Costo WHERE ProcSolicitadoID=@ProcSolicitadoID
    END
    END
    CLOSE AjustaCosto
    DEALLOCATE AjustaCosto
    ejecutando mi select del cursor solo devuelve 8 registros(en realidad devolverá unos miles)

    La programacion en Microsoft cada ves se torna inalcanzable


    lunes, 10 de octubre de 2016 14:30

Respuestas

  • Te falta un FETCH NEXT... dentro del WHILE. Si no lo pones, el cursor no avanza y repite todas las iteraciones sobre el mismo registro, con lo que parece que se ha quedado colgado.
    lunes, 10 de octubre de 2016 17:15

Todas las respuestas

  • Te falta un FETCH NEXT... dentro del WHILE. Si no lo pones, el cursor no avanza y repite todas las iteraciones sobre el mismo registro, con lo que parece que se ha quedado colgado.
    lunes, 10 de octubre de 2016 17:15
  • Te falta un FETCH NEXT... dentro del WHILE. Si no lo pones, el cursor no avanza y repite todas las iteraciones sobre el mismo registro, con lo que parece que se ha quedado colgado.
    gracias sr. aun así me tardó mucho, al final opté por otra tecnica

    La programacion en Microsoft cada ves se torna inalcanzable

    miércoles, 12 de octubre de 2016 1:39