none
Dúvida com cursor! RRS feed

  • Pergunta

  • Olá Galera,

    Tudo bem? então eu estou com uma dúvida aqui seguinte: tenho duas tabelas tamporarias, mas uma tem o valor do código e outra não. Assim fiz um cursor para popular uma coluna (código) a partir do nome (descricao) que é igual nas duas. Porém ele está dizendo que há 0 colunas iguais e não traz o valor... alguém sabe como ajudar?

     declare cursor_objects cursor
     for
     select codigo, descricao from #temp_recebe_query2 --FOR UPDATE OF #temp_recebe_query
     go
     
      declare @descricao_item    varchar(150),
              @codigo_item        varchar(150)

     open cursor_objects
     FETCH NEXT from cursor_objects into @descricao_item, @codigo_item
     
     while @@FETCH_STATUS = 0
     begin
     update #temp_recebe_query
     set cod_item = @codigo_item
     where desc_item  = @descricao_item
     --WHERE CURRENT OF cursor_objects
     FETCH NEXT from cursor_objects into @descricao_item, @codigo_item
     end
     close cursor_objects
     deallocate cursor_objects

    quinta-feira, 13 de dezembro de 2012 20:01

Respostas

  • Akir4, me parece um update bem simples para ser necessario um cursor, por que voce não faz isso em um update simples ? ex:

    update T1
    set T1.cod_item = T2.cod_item
    from #temp_recebe_query sa T1
    inner join #temp_recebe_query2 as T2 on T1.desc_item = T2.desc_item
      


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta _Juliano_Alves_ segunda-feira, 17 de dezembro de 2012 16:12
    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 12:37
    segunda-feira, 17 de dezembro de 2012 14:03

Todas as Respostas

  • Akir4,

    Esta mensagem de erro de 0(zero) colunas iguais é algo bastante generic eu particularmente não me lembro de ter visto esta mensagem.

    Eu observei que você esta fazendo o avanço do cursor dentro do While e fora através do comando Fetch Next, você já verificou se os dados realmente existem na sua tabela temporária 2?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 14 de dezembro de 2012 12:39
  • Akir4, creio que o problema possa ser que vc inverteu as colunas...

    No SELECT vc traz Codigo e depois Descrição, e no FETCH vc está populando a Descrição e depois o Código. Tente inverter no FETCH para Código e depois Descrição assim como está no SELECT.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 14 de dezembro de 2012 13:45
  • Akir4, me parece um update bem simples para ser necessario um cursor, por que voce não faz isso em um update simples ? ex:

    update T1
    set T1.cod_item = T2.cod_item
    from #temp_recebe_query sa T1
    inner join #temp_recebe_query2 as T2 on T1.desc_item = T2.desc_item
      


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta _Juliano_Alves_ segunda-feira, 17 de dezembro de 2012 16:12
    • Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 12:37
    segunda-feira, 17 de dezembro de 2012 14:03