- Este tópico contém 11 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 3 meses atrás por
Leonardo Litz.
-
AutorPosts
-
1 de setembro de 2010 às 6:34 pm #95822
Anakim
ParticipanteComo 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.
1 de setembro de 2010 às 6:59 pm #95824Regis Araujo
ParticipanteFala 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….!!!
1 de setembro de 2010 às 7:00 pm #95826diegomello
ParticipanteDBMS_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);1 de setembro de 2010 às 8:12 pm #95833Anakim
ParticipanteO 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.
1 de setembro de 2010 às 8:22 pm #95834Leonardo Litz
Participantedeclare
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_SCHEDULERVlw Leonardo Litz
1 de setembro de 2010 às 8:22 pm #95835Anakim
ParticipanteOu a sintaxe para ficar executando de um e um dia é assim?
dbms_job.submit (x,'job_proc;',sysdate, sysdate+1);
1 de setembro de 2010 às 8:26 pm #95836Leonardo Litz
ParticipanteSim, mas neste exemplo ele irá executar agora, e amanha neste mesmo horário, é isso que vc quer?
1 de setembro de 2010 às 8:27 pm #95837Anakim
ParticipanteEu quero que ele execute hoje e depois, a partir de hoje, todos os dias, mas as 02 horas da manhã.
1 de setembro de 2010 às 8:31 pm #95838Leonardo Litz
ParticipantePõe assim;
trunc(SYSDATE + 1) + (1/24)*2
declare
x integer;
begindbms_job.submit (x,'job_proc;',sysdate, 'trunc(SYSDATE + 1) + (1/24)*2');
end;
Vlw Leonardo Litz
1 de setembro de 2010 às 8:34 pm #95840Anakim
ParticipantePorque 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?
1 de setembro de 2010 às 8:40 pm #95841Anakim
ParticipanteO (1/24)*2 eu rodei uma query aqui e vi que vai ser agendado para as 02 horas da manhã.
1 de setembro de 2010 às 8:54 pm #95843Leonardo Litz
ParticipanteExato!
-
AutorPosts
- Você deve fazer login para responder a este tópico.