Pular para o conteúdo
  • Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por Girino.
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #98053
    Girino
    Participante

      Boa Noite à Todos..!! 8)

      Estou quase resolvendo meu problema.
      Já estaria resolvido se na procedure abaixo não desse erro de tabela locada, ou seja, eu gero informações em uma tabela na primeira procedure e depois eu atualizo as informações com base nessa tabela, porem da esse bendito erro. (ORA-01591: lock held by in-doubt distributed transaction string)

      CREATE OR REPLACE PROCEDURE ATUALIZA_BASE IS

      BEGIN

      BEGIN
      CHECA_DADOS;
      END;

      BEGIN
      ATUALIZA_DADOS;
      END;

      END;

      Alguém teria a lguma sugestão? 💡

      Já tentei com Package também e dá o mesmo erro..!! 🙁 🙁

      To Ferrado..!! 😥

      #98056
      Gilkauer
      Participante

        Dentro da procedure CHECA_DADOS tu faz alguma manipulação de dados? (insert/update/delete)

        Se fizer vai ter que salvar as alterações para que o procedimento possa continuar.

        #98058
        leandrolbs
        Participante

          coloque o script da tabela aqui..

          pois provavelmente ela deve ter ficado com algum “commit” pendente, na criação dela coloque delete on commit acho que vai resolver.

          #98062
          Girino
          Participante

            Segue: 😀

            CREATE OR REPLACE PROCEDURE CHECA_DADOS
            IS

            BEGIN

            Execute Immediate’DELETE TMP_TESTE1′;
            Execute Immediate ‘INSERT INTO TMP_TESTE1 as SELECT campo FROM tabela;


            EXCEPTION
            WHEN OTHERS THEN
            ROLLBACK;

            END;

            Obs: Depois eu utilizo os dados da tabela TMP_TESTE1 NA 2º Procedure. 😉

            #98064
            Gilkauer
            Participante

              É realmente o que eu mencionei. Você esta manipulando as informações e não esta as salvando no banco.
              Você deve dar um commit para tirar a tabela de lock.

              Agora se me permite um comentário, não vejo a nescessidade de executar os comandos via EXECUTE IMMEDIATE.

              #98066
              Girino
              Participante

                Olá, tudo Bem? 😀

                Onde eu coloco o commit?
                Seria apenas um neste caso? ou 2?

                Quanto ao execute immediate, eu apenas copiei como exemplo. Realmente não há necessidade neste caso. 😀

                Muito Obrigado, 💡

                #98067
                Gilkauer
                Participante

                  Pode ser incluido após o ultimo comando executado (insert into …)

                  #98071
                  fsitja
                  Participante

                    O When Others é um problema. Como regra geral, não use when others a menos que dê um RAISE; dentro do bloco de exception, ou o programa chamador não receberá o aviso, mascarando uma situação de erro que pode deixar o banco com problemas sérios de consistência e integridade de dados.

                    Além disso, qualquer exception disparado para cima automaticamente já faz um rollback implícito do programa que está sendo executado.

                    In database PL/SQL units, an unhandled user-error condition or internal error condition that is not trapped by an appropriate exception handler causes the implicit rollback of the program unit.

                    http://download.oracle.com/docs/cd/E118 … m#ADFNS359

                    A título de informação, todos comandos de DDL (criação e drop de tabela, por exemplo) fazem commit implícito e é preciso atenção com o uso de execute immediate nesses casos.

                    #98073
                    Girino
                    Participante

                      Galera..!! 😀

                      Muito Obrigado pela Ajuda..!! 💡

                      Esta Rodando e parece que esta funcionando perfeitamente após eu colocar o commit…!! 😀 😀 😀

                      Vou ficar monitorando e qualquer coisa eu retorno, mas por enquanto obrigado mesmo..!! 😛

                      Agora já virei Sapo 😀

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