Ir para conteúdo

POWERED BY:

Arquivado

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

leo_SJCampos

Problema em update

Recommended Posts

galera... seguinte..

Preciso alterar um campo. Só que para isso preciso da igualdade de dois campos de tabelas distintas... tentei fazer assim.

 

UPDATE  proc_interno
SET  cd_procedimento = proc_interno_conv.cd_procedimento FROM proc_interno_conv,proc_interno
WHERE proc_interno.nr_sequencia = proc_interno_conv.nr_seq_proc_interno 
AND proc_interno_conv.ie_origem_proced = 1

só que deu erroo.. "Comando SQL não encerrado adequadamente"

 

Alguem pode me ajudar?

Valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

Update Proc_Interno
  Set Cd_Procedimento =
      (Select a.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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Oracle não isto diretamente, é preciso fazer um bloco PLSQL faça assim ...

 

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

 

Mas leia este artigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu esse erro

ORA-01427: a subconsulta de uma única linha retorna mais de uma linha

 

Valeu por responder Motta, mas eu nao manjo muita coisa de oracle... só estou mexendo nesse projeto pela primeira vez...

 

Aonde eu coloco esse trecho de codigo que você me passou?

 

Valeu....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, eu já esperava que pudesse dar esse erro mesmo.

Nesse caso, é a solução que o Motta postou acima que vai te ajudar.

 

Só dando uma ajustada:

 

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;

Você deve usar isso no lugar do update que você estava tentando executar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só dando uma ajustada

tecla SAP

 

Corrigindo ....

 

:)

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.