Pular para o conteúdo
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #89081
    Itimura
    Participante

      Ola pessoal, mais uma vez venho solicitar a ajuda de vocês que sempre tem ajudado com enorme atenção

      desde jah Obrigado

      Seguinte:

      Cenario:

      Tabela de produtos
      A Gerencia resolveu mudar a descrição de todos os produtos da empresa, me repassou os códigos e a descrição correta de como será

      Subi essa planilha do excell em uma tabela no banco(depois eu dropo ela) nela consta somente o dódigo do produto e a descrição (tabela PRODUTOS_DESCRICAO)

      Agora preciso fazer um update na tabela PRODUTOS sendo a descrição igual a tabela PRODUTOS_DESCRICAO com referencia nos códigos de cada produto..

      não sei como posso fazer isso no oracle

      ou melhor, da pra fazer isso?

      Obrigado

      #89085
      Avatar photoRegis Araujo
      Participante

        Salve Itimura..

        Tenta assim..

        UPDATE PRODUTOS PROD SET PROD.DESCRICAO = (SELECT PRODDESC.DESCRICAO FROM PRODUTOS_DESCRICAO PRODDESC
        WHERE PRODDESC.CODIGO = PROD.CODIGO)

        Ve se isto resolve..

        Abraços….

        #89098
        Itimura
        Participante

          Ola Thunder! tudo bem?!

          Obrigado, eu estava caminhando nesse mesmo pensamento, só reajustei para a sua resposta e foi a mesma

          Deu erro ao executar dizendo “ORA-01427: A subconsulta de uma única linha retorna mais de uma linha”

          código utilizado:


          update pcprodut produto
          set produto.descricao =
          (select descricao from produtos_descricao_b prodesc
          where prodesc.codprod = produto.codprod)

          #89102
          Rodrigo Mesquita
          Participante

            coloca um distinct antes de descricao

            #89103
            Itimura
            Participante

              Ola Rodrigo

              mesmo erro..


              update pcprodut produto
              set produto.descricao =
              (select distinct descricao from produtos_descricao_b prodesc
              where prodesc.codprod = produto.codprod)

              #89104
              Rodrigo Mesquita
              Participante

                Nesses casos recomento o uso do comando Merge

                MERGE INTO pcprodut P
                USING (SELECT descricao
                FROM produtos_descricao_b d)
                ON (p.codprod = d.codprod)
                WHEN NOT MATCHED THEN
                UPDATE SET p.descricao = d.descricao

                #89105
                Itimura
                Participante

                  agora ele fala que a palavra chave não foi encontrada

                  ORA-00905

                  #89109
                  Ishii
                  Participante

                    Olá,

                    O Merge funciona para versão 9i em diante. Verifique se o parâmetro compatilble está para 9i ou superior.

                    []s Ishii

                    #89111
                    Itimura
                    Participante

                      Ola Ishii tudo bem?!

                      então, estou usando o SQL Developer e os controles de versões estão ativos…

                      realmene é muito dificil de fazer este update?!

                      #89122
                      Ishii
                      Participante

                        Olá,

                        Tente assim:


                        MERGE INTO pcprodut D
                        USING (SELECT descricao, codprod FROM produtos_descricao_b) S
                        ON (D.codprod= S. codprod)
                        WHEN MATCHED THEN UPDATE SET p.descricao = d.descricao

                        Se ainda não funcionar, verifique se a sintaxe está correta.

                        []s Ishii

                        #89123
                        Ishii
                        Participante

                          Ops, digitei errado…


                          MERGE INTO pcprodut D
                          USING (SELECT descricao, codprod FROM produtos_descricao_b) S
                          ON (D.codprod= S. codprod)
                          WHEN MATCHED THEN UPDATE SET d.descricao = s.descricao

                          []s Ishii

                          #89124
                          jp_centec
                          Participante

                            Faz um cursorzinho e mata essa parada.

                            Declare
                            curosr cursor_upd is
                            select cod, desc from produtos_descricao;
                            begin
                            for reg in curosr_upd loop
                            update produtos
                            set descricao_produto = reg.desc
                            where codigo_produto=ref.cod;
                            end loop;
                            end;
                            /

                            #89175
                            Itimura
                            Participante

                              Obrigado mais uma vez pela atenção de vocêis, foi resolvido com o primeiro update passado, o que estava impedindo de ser realizado era que eu não tinha a mesma quantidade de produtos com a tabela de origem e isso causou retono de erros do oracle

                              Obrigado !!

                              De coração

                              Valew!

                              [quote=”Thunder_Catz”:12icu52d]Salve Itimura..

                              Tenta assim..

                              UPDATE PRODUTOS PROD SET PROD.DESCRICAO = (SELECT PRODDESC.DESCRICAO FROM PRODUTOS_DESCRICAO PRODDESC
                              WHERE PRODDESC.CODIGO = PROD.CODIGO)

                              Ve se isto resolve..

                              Abraços….[/quote]

                            Visualizando 13 posts - 1 até 13 (de 13 do total)
                            • Você deve fazer login para responder a este tópico.