Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Machado

[Resolvido] Atualizar Dados de Uma Tabela Apartir de Outra

Recommended Posts

Parceiros, boa noite.

 

Preciso igualar os dados de duas colunas presentes em duas tabelas diferentes, abaixo seguem as metodologias que já tentei usar e não obtive êxito.

 

Método 01: Usando o comando JOIN

 

UPDATE TABELA01 TBL01 JOIN TABELA02 TBL02

ON TBL01.COLUNA_01 = TBL02.COLUNA_01

SET TBL01.COLUNA_02 = TBL02.COLUNA_02;

 

Neste método, o erro apresentado é: ORA-00971: missing SET keyword

 

Método 02: Usando uma SUBQUERY no comando SET

 

UPDATE TABELA01 TBL01

SET TBL01.COLUNA02 = (SELECT TBL02.COLUNA02 FROM TABELA02 TBL02 WHERE TBL01.COLUNA01 = TBL02.COLUNA01);

 

Neste método, o erro apresentado é: ORA-01427: single-row subquery returns more than one row

 

Solicito a ajuda dos colegas para resolução deste problema.

 

Fico no aguardo.

 

Atenciosamente,

 

André Machado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

Primeiramente, obrigado pela atenção dada ao assunto.

 

Li o tópico enviado por você, tentei adaptar o código ao meu cenário, mas não obtive sucesso. Segue abaixo o código que fiz e o erro apresentado:

 

Código sugerido no post:

BEGIN
  FOR R IN (SELECT a.nr_seq_proc_interno nr_sequencia,
                   a.cd_procedimento cd_procedimento
              FROM proc_interno_conv a,
                   proc_interno b
             WHERE b.nr_sequencia = a.nr_seq_proc_interno 
               AND a.ie_origem_proced = 1)
  LOOP
    UPDATE proc_interno c
       SET c.cd_procedimento = R.cd_procedimento
     WHERE c.nr_sequencia = R.nr_sequencia;
  END LOOP;
END;

 

Código adaptado ao meu cenário:

BEGIN
  FOR R IN (SELECT TBL01.COLUNA01, TBL01.COLUNA02 
            FROM TABELA01 TBL01, TABELA02 TBL02
            WHERE TBL01.COLUNA01 = TBL02.COLUNA01)
  LOOP
    UPDATE TABELA01 TBL01
      SET TBL01.COLUNA02 = R.COLUNA02 
      WHERE TBL01.COLUNA01 = R.COLUNA01;
  END LOOP;
END;

Erro:

Relatório de erro:

ORA-01722: invalid number

ORA-06512: at line 6

01722. 00000 - "invalid number"

 

Aguardo nova interação.

 

Obrigado.

 

André.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria ser algo como

 

BEGIN
  FOR R IN (SELECT TBL01.CHAVE, TBL02.COLUNA
            FROM TABELA01 TBL01, TABELA02 TBL02
            WHERE TBL01.CHAVE = TBL02.CHAVE)
  LOOP
    UPDATE TABELA01 TBL01
    SET TBL01.COLUNA = R.COLUNA 
    WHERE TBL01.CHAVE = R.CHAVE;
  END LOOP;
END;

Ou seja, levando as informações da 02 para a 01.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.