Milton e Chiappa,

Obrigado pelas dicas e pelos esclarecimentos, vou testar sim e vou retirar
minha gambiarra.

=)


Em 6 de setembro de 2013 17:00, Milton Bastos Henriquis Jr. <
miltonbas...@gmail.com> escreveu:

> **
>
>
> Acho que vc nao entendeu o conceito, Saulo!
>
> Funciona sim, pode testar.
>
>
> 2013/9/6 Saulo Brito <saulo.brit...@gmail.com>
>
>> **
>>
>>
>> Aqui na empresa é 11g.
>>
>> Milton, realmente ele deu tudo mastigado, acontece que só seria executado
>> nos meses de 10 a 31. Os meses de fevereiro e que terminam em 30 não
>> funcionariam. Isso é basicamente uma dúvida que tenho, funcionaria?
>>
>> O meu problema é justamente esse 'repeat_interval', tenho que cria-lo de
>> uma forma que pegue sempre o dia 10 ao ultimo dia do mês. Todos os meses do
>> ano.
>>
>> =/
>>
>>
>> Em 6 de setembro de 2013 15:47, Milton Bastos Henriquis Jr. <
>> miltonbas...@gmail.com> escreveu:
>>
>> **
>>>
>>>
>>> Não entendi, "dar bastante trabalho" por que?
>>> O Chiappa já praticamente te passou a receita prontinha de como fazer, é
>>> só copiar o código dele e adaptar colocando a tua proc!
>>>
>>> Claro, isso considerando que vc tenha versão 10g ou mais atual, conforme
>>> ele explicou no e-mail dele, já que vc não especificou a versão no seu
>>> e-mail e por isso não tem como a gente adivinhar....
>>>
>>> Tua solução realmente ficou uma gambiarra, pois vc vai executar um JOB
>>> todos os dias, inclusive nos dias que vc não precisa, consumindo assim
>>> recursos de forma desnecessária.
>>> Tudo bem que com a sua lógica de programação vc não vai executar a proc
>>> inteira, mas de qualquer maneira vc vai ter um job sendo disparado e um
>>> trecho da proc sendo executada.
>>>
>>> Da maneira que o Chiappa colocou ele só executa nos dias que vc
>>> realmente precisa.
>>>
>>>
>>>
>>>
>>>
>>> 2013/9/6 Saulo Brito <saulo.brit...@gmail.com>
>>>
>>>> **
>>>>
>>>>
>>>> J. Laurindo, acho que essa seria a forma correta de fazer só que iria
>>>> me dar bastante trabalho e consequentemente consumir um tempo que já não
>>>> tenho.
>>>>
>>>> Bom, resolvi de outra forma o problema. Fiz uma validação dentro da
>>>> PROC mesmo, só verifico se a data atual está entre o dia 10 e o ultimo dia
>>>> do mês atual, se a condição for valida eu executo o resto da proc. O JOB
>>>> coloquei para executar todo dia.
>>>>
>>>> Acho que não ficou legal e que não é o correto. Enfim, o que você acha
>>>> disso? é uma gambiarra?
>>>>
>>>> Abraços
>>>> Saulo Brito
>>>>
>>>>
>>>> Em 6 de setembro de 2013 15:22, J. Laurindo Chiappa <
>>>> jlchia...@yahoo.com.br> escreveu:
>>>>
>>>>  **
>>>>>
>>>>>
>>>>> Primeira coisa, para agendamentos mais complexos do tipo o ** IDEAL
>>>>> **, mais simples / menos trabalhoso, é vc usar a opção de executar JOBs
>>>>> pelo ORACLE SCHEDULER, que foi introduzido na versão 10g : caso vc esteja
>>>>> com RDBMS em versão mais antiga que isso, aí vai ser bem mais trabalhoso,
>>>>> provavelmente o que vc faria no caso seria criar e manter uma TABELA com 
>>>>> os
>>>>> dias em que a procedure deve rodar e criar um JOB que dispare todo dia mas
>>>>> a cada vez leia a tabela e veja se "hoje é dia" da proc rodar, se não for
>>>>> não roda...
>>>>>
>>>>> Sendo banco 10g ou superior : pelo que vejo vc quer rodar Mensalmente,
>>>>> nos dias dos meses de 10 até 31 , então ficaria + ou - assim :
>>>>>
>>>>>
>>>>> BEGIN
>>>>> DBMS_SCHEDULER.create_job (
>>>>> job_name => 'nomedoteujob',
>>>>> job_type => 'PLSQL_BLOCK',
>>>>> job_action => 'BEGIN nomedaprocedureaserrodada; END;',
>>>>> start_date => TO_DATE('10/09/2013 ....',
>>>>> repeat_interval => 'FREQ=MONTHLY; BYMONTHDAY=10,11,12,13,14.....31;',
>>>>> end_date => TO_DATE('30/11/2013....',
>>>>> enabled => TRUE,
>>>>> comments => 'Comentários do teu job.');
>>>>> END;
>>>>> /
>>>>>
>>>>> Blz ? qquer dúvida mais sobre sintaxes e conceitos, dá um look em
>>>>> http://www.oracle-base.com/articles/10g/scheduler-10g.php e no manual
>>>>> "Oracle® Database Administrator's Guide" da tua versão de RDBMS, que vc
>>>>> terá um capítulo "Scheduling Jobs with Oracle Scheduler" , e se ainda 
>>>>> assim
>>>>> não conseguir, retorna com os detalhes de versão que a gente tenta te
>>>>> ajudar mais...
>>>>>
>>>>> []s
>>>>>
>>>>> Chiappa
>>>>>
>>>>> OBS : só um detalhe : para se poder criar jobs normalmente o DBA **
>>>>> tem ** que te dar privilégios específicos, então Confira com o teu DBA se 
>>>>> o
>>>>> seu usuário no banco os tem, yep ??
>>>>>
>>>>> --- Em oracle_br@yahoogrupos.com.br, Saulo Brito <saulo.brito01@...>
>>>>> escreveu
>>>>>
>>>>> >
>>>>> > Olá, sou desenvolvedor e me passaram uma tarefa de criar um JOB que
>>>>> executa
>>>>> > uma proc.
>>>>> >
>>>>> > Já fiz a proc só que nunca fiz um JOB na vida, e estou com a seguinte
>>>>> > dúvida:
>>>>> >
>>>>> > - Como faço a regra pro JOB ser executado de uma data X até o final
>>>>> do mês
>>>>> > consecutivamente?
>>>>> >
>>>>> > Por exemplo:
>>>>> >
>>>>> > dia 10/09 até dia 30/09
>>>>> >
>>>>> > e continuar
>>>>> >
>>>>> > dia 10/10 até dia 31/10
>>>>> > dia 10/11 até dia 30/11
>>>>> >
>>>>> >
>>>>> > Pesquisei no google e tentei algumas coisas sem sucesso.
>>>>> > Poderiam me ajudar? Só a regra mesmo.
>>>>> >
>>>>> >
>>>>> > Obrigado,
>>>>> >
>>>>> > Saulo Brito
>>>>> >
>>>>>
>>>>>
>>>>
>>>
>>
>  
>

Responder a