Pular para o conteúdo
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #87261
    MaxSteel
    Participante

      tenho um trigger que faz o seguinte comando:
      :NEW.minutolanc := to_char(sysdate, ‘MI’);

      o campo minutolanc e definido como varchar2(2), só que sempre esta dando a mensagem de ora-12899, alguem tem ideia do que pode ser ???

      muito obrigado!

      #87264
      Avatar photoRegis Araujo
      Participante

        Opa.. Bom dia..

        Bom, o erro é de valor maior do que o esperado, mas como você informou que o tamanho está correto..

        Sugiro que você realize um teste, crie esta trigger apontando para uma tabela de teste, onde esta campo tenha o tamanho de 50 e verifique qual o valor que ele inseriu.. Assim você irá verificar se ele está inserindo algo que não é para inserir.

        Abraços…

        #87265
        MaxSteel
        Participante

          Fiz um teste onde na trigger fiz um if:
          IF length (TO_CHAR (SYSDATE, ‘MI’)) > 2 then
          Raise_application_error(-20000,’valor encontrado : ‘||TO_CHAR (SYSDATE, ‘MI’));
          end if;

          e passa batido neste if e da erro no campo, vou testar o que você pediu depois eu posto o resultado.

          por hora muito obrigado!

          abraço

          #87266
          MaxSteel
          Participante

            Criei um campo do tipo varchar2(4000) e mesmo assim quando e executado o comando :NEW.teste2 := TO_CHAR (SYSDATE, ‘MI’);
            da o erro ORA-12899 value too large for column teste2(actual:8872, maximum:4000).

            não estou entendendo

            #87267
            Avatar photoRegis Araujo
            Participante

              Opa..

              Bem estranho isto..

              Mas faz assim..

              MI VARCHAR2(2) := '';

              select to_char(sysdate,'MI') into MI from dual;

              :NEW.teste2 := MI;

              Pois assim ele irá passar apenas o valor que vc precisa…

              #87268
              eversonpiza
              Participante

                Uma forma de vc saber oq esta gravando, sem estourar o campo, é dar uma substr nele.

                algo assim:

                :NEW.teste2 := substr(TO_CHAR (SYSDATE, ‘MI’),1,4000);

                Assim vc verá oq ele esta tentando inserir.

                #87284
                MaxSteel
                Participante

                  Boa tarde pessoal,

                  e o seguinte fiz o teste de fazer um substr e não deu nenhum problema, mas o campo em questão ficou nulo sem informação, se eu volta a gravar no campo varchar2(2) da erro na hora, o engraçado e que se executar o camando com um select from dual nunca da problema.
                  Se alguem tivar mais alguma dica será muito bem vinda.

                  #87289
                  MaxSteel
                  Participante

                    Bom dia a todos,

                    Após muita luta com este problema, fiz o seguinte dropei as duas colunas que estavam apresentando esta mensagem criei novamente as duas colunas e não deu mais erros.

                    Agora fica a ? do que pode ter gerado este problema.

                    Pessoal valeu pela força.

                    #87451
                    MaxSteel
                    Participante

                      Boa tarde!

                      Bom não funcionou o processo que fiz, pois no teste executaram outro perido e quando executa o periodo de um mês volta a dar o problema.

                      se alguem tivar mais alguma sugestão, fico agradecido!

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