Pular para o conteúdo
  • Este tópico contém 11 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 3 meses atrás por Avatar photoLeonardo Litz.
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #95822
    Anakim
    Participante

      Como eu posso criar um Job que irá rodar todo dia em um determinado horário?

      Procurando na internet eu achei este exemplo, mas tenho algumas dúvidas:


      declare
      x integer;
      begin
      dbms_job.submit (x,'SUA PROCEDURE;',sysdate+0.4/24);
      end;

      Gostaria de saber o que é o primeiro parâmetro “x” do dbms_job.submit? E se tem como passar um valor para a procedure do Job.

      #95824
      Avatar photoRegis Araujo
      Participante

        Fala Anakin..

        Então.. neste caso eu prefiro usar o SCHEDULER.. é muito mais amigável e tem varias opções de execução..!!!

        DBMS_SCHEDULER

        Da uma lida sobre ele..!!!

        Abraços….!!!

        #95826
        diegomello
        Participante

          DBMS_JOB.SUBMIT
          To submit a job to the job queue, use the following syntax:

          DBMS_JOB.SUBMIT(
          job OUT BINARY_INTEGER,
          what IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE,
          interval IN VARCHAR2 DEFAULT ‘NULL’,
          no_parse IN BOOLEAN DEFAULT FALSE,
          instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
          force IN BOOLEAN DEFAULT FALSE);

          Fonte: Oracle.com

          #95833
          Anakim
          Participante

            O X poderia ser um “id” que identifica um job? Ou um id que irá ser criado depois de submeter a procedure?

            Eu cheguei na seguinte sintaxe:


            dbms_job.submit (x,'job_proc;',sysdate, sysdate+24/24);

            Esse scheduler irá rodar todos os dias? Eu só estou na dúvida agora de como montar o intervalo e setar a hora de início.

            Desde já agradeço a ajuda de todos.

            #95834
            Avatar photoLeonardo Litz
            Participante

              declare
              x integer;
              begin
              dbms_job.submit (x,'SUA PROCEDURE;',sysdate+0.4/24);
              end;

              O x é o código do JOB que a procedure dbms_job.submit irá retornar no momento da criação do JOB, não servirá para nada, é apenas porque o primeiro parametro é OUT.

              Para rodar diariamente em um mesmo periodo, é DBMS_JOB mesmo.
              Se vc quiser rodar em dias intercalados com frequencia variavel, por exemplo; Na sexta as 12h no Domingo a 19h… aí vc utiliza o DBMS_SCHEDULER

              Vlw Leonardo Litz

              #95835
              Anakim
              Participante

                Ou a sintaxe para ficar executando de um e um dia é assim?


                dbms_job.submit (x,'job_proc;',sysdate, sysdate+1);

                #95836
                Avatar photoLeonardo Litz
                Participante

                  Sim, mas neste exemplo ele irá executar agora, e amanha neste mesmo horário, é isso que vc quer?

                  #95837
                  Anakim
                  Participante

                    Eu quero que ele execute hoje e depois, a partir de hoje, todos os dias, mas as 02 horas da manhã.

                    #95838
                    Avatar photoLeonardo Litz
                    Participante

                      Põe assim;

                      trunc(SYSDATE + 1) + (1/24)*2

                      declare
                      x integer;
                      begin

                      dbms_job.submit (x,'job_proc;',sysdate, 'trunc(SYSDATE + 1) + (1/24)*2');

                      end;

                      Vlw Leonardo Litz

                      #95840
                      Anakim
                      Participante

                        Porque agora você usou o “trunc”?

                        • o primeiro sysdate eu sei que está dizendo que será executado hj;
                        • ( sysdate + 1 ) quer dizer que será executados todos os dias;
                        • E o trunc?
                        • E o (1/24)*2?
                        #95841
                        Anakim
                        Participante

                          O (1/24)*2 eu rodei uma query aqui e vi que vai ser agendado para as 02 horas da manhã.

                          #95843
                          Avatar photoLeonardo Litz
                          Participante

                            Exato!

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