Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #98908
    Sousa04
    Participante

      boa noite pessoal,

      uma ajuda por favor

      preciso criar uma procedure que leia uma tabela de log
      e conforme o resultado do select
      atualizar uma tabela

      então criei assim

      create or replace
      PROCEDURE STP_RETURN_UPDATE_TB_CLIENTES (PK_CHAVE in number)
      IS
      BEGIN
      FOR S_TEMP IN
      (SELECT VALOR_ANTIGO,
      COLUNA
      FROM AUDIT_ALEXSOUSA
      WHERE CHAVE_PRIMARIA=PK_CHAVE) LOOP

      UPDATE SOUSA04.CLIENTES
      SET S_TEMP.COLUNA=S_TEMP.VALOR_ANTIGO
      WHERE CLIENTE_ID=PK_CHAVE;
      END LOOP;

      END;

      Erro(7,5): PL/SQL: ORA-00904: “S_TEMP”.”COLUNA”: identificador inválido

      dai não estou sabendo mais desenrrolar
      alguma dica??

      #98909
      Ishii
      Participante

        Olá,

        Não entendi direito a sua estrutura, mas vamos lá…

        Essa S_TEMP é uma tabela? Se for de qual tabela? SOUSA04.CLIENTES?

        []s Ishii

        #98910
        Sousa04
        Participante

          Olá Ishi não tenho muita expertise em PL/SQL

          Então S_TEMP imagino que seja um cursor que vai armazenar o resultado de
          SELECT VALOR_ANTIGO, COLUNA
          FROM AUDIT_ALEXSOUSA
          WHERE CHAVE_PRIMARIA=PK_CHAVE

          nesse caso VALOR_ANTIGO E COLUNA estariam em S_TEMP

          então depois eu utilizaria esses valores no update
          /*
          UPDATE SOUSA04.CLIENTES

          SET S_TEMP.COLUNA=S_TEMP.VALOR_ANTIGO

          WHERE CLIENTE_ID=PK_CHAVE;
          */

          E QUANDO EXECUTO MOSTRA O ERRO
          Erro(7,5): PL/SQL: ORA-00904: “S_TEMP”.”COLUNA”: identificador inválido

          tentei fazer de outras formas mas sempre caio no mesmo erro.

          #98911
          Ishii
          Participante

            Olá,

            Ok, indeed…


            UPDATE SOUSA04.CLIENTES

            SET =S_TEMP.VALOR_ANTIGO

            WHERE CLIENTE_ID=PK_CHAVE;

            Isso se for para atualizar com o valor antigo, se a intenção era usar o valor do cursor na definição do nome da coluna a ser atualizada… você deverá estudar o comando EXECUTE IMMEDIATE e montar a linha de UPDATE linha a linha e coluna a coluna….

            []s Ishii

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