Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 10 meses atrás por Thiago Vilhena.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #94061
    Thiago Vilhena
    Participante

      Bom dia pessoal, mais uma venho aqui pedir um help..

      Po eu estou aqui tentando trazer esse select
      SELECT SYSDATE,
      LAST_DAY(SYSDATE) "Last",
      LAST_DAY(SYSDATE) - SYSDATE "Days Left"
      FROM DUAL

      Dentro de um bloco PL/SQL e verificar se faltam menos de 3 dias para a virada do mes, e printar na tela tela do sqlplus

      tentei fazer essa linda gambiarra rsrs,

      /* BEGIN
      FOR item IN
      (
      SELECT SYSDATE
      FROM DUAL
      )
      LOOP
      dbms_output.put_line('SYSDATE =' || item.sysdate || ', ULTIMO DIA =' ||LAST_DAY(item.sysdate) || ', FALTAM = ' ||(LAST_DAY(item.sysdate) - SYSDATE) || ' DIAS');
      END LOOP;
      END;
      /

      A ideia, é utilizar essa verificação para que todo final de mes quando faltar menos de 3 dias para virada rode uma outra query que verifique se uma tabela especifica está particionada, ai caso ela nao esteja executar uma DDL para fazer o particionamento, mas estou indo por partes

      Primeiro tentar trazer essa query para verificar quanto tempo falta para acabar o mes

      Vlw pessoal abração

      #94062
      Thiago Vilhena
      Participante

        ah pessoal estou caminhando rsrs conssegui isso aqui…declare
        data_01 date;
        data_02 date;
        data_03 varchar2(50);
        BEGIN
        SELECT SYSDATE,
        LAST_DAY(SYSDATE),
        LAST_DAY(SYSDATE) - SYSDATE
        into data_01, data_02, data_03
        FROM DUAL;
        dbms_output.put_line('SYSDATE =' || data_01 || ', ULTIMO DIA =' || data_02 || ', FALTAM = ' || data_03);
        END;
        /

        vou verficar se é menos que 3

        #94063
        Avatar photoRegis Araujo
        Participante

          Thiago..!!

          Não é mais facil vc criar um JOB que execute todo dia 28 de cada mês?? Um Job que irá criar as partições para o proximo mês ???!?!

          Abraços..!

          #94064
          burga
          Participante

            ou algo assim:

            select 1
            from dual
            where
            to_char(sysdate + 3,'MM') != to_char(sysdate,'MM');

            #94065
            Thiago Vilhena
            Participante

              [quote=”Thunder_Catz”:39pais33]Thiago..!!

              Não é mais facil vc criar um JOB que execute todo dia 28 de cada mês?? Um Job que irá criar as partições para o proximo mês ???!?!

              Abraços..![/quote]

              Entao, isso ira ser feito em PROCEDURE, irei criar uma procedure para fazer isso, mas como nao entendo muito de PL, alias nada rsrs
              eu estou estudando.

              #94066
              Thiago Vilhena
              Participante

                Entao a ideia é que a proc irá ser executada todos os dias, dai qando faltar la os 3 dias pra virada do mes ela vai la verifica se esta particionada se estiver passa direto se nao estiver particionado, vai la e particiona, =D foi essa logica que pensei.

                penssei nisso visando algum problema da aplicação parar de funcionar e ficar travado uns 2 dias, quando restaurarem a procedure vai verificar la e vai fazer, é pra precaver futuros problemas =D

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