Pular para o conteúdo
  • Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 5 meses atrás por Avatar de Douglas Paiva de SousaDouglas Paiva de Sousa.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #103850
    Avatar de israelpaisraelpa
    Participante

      Olá, amigos do fórum!

      Estou aprendendo oracle na versão 10g XE. Minha missão é melhorar um sistema feito em Apex 4.0.1.00.03. Tenho a seguinte situação: preciso todos os dias após as 0h executar o comando:

      update apolices
      set status = ‘3’
      where fim between ’01/31/2012′ and (sysdate – 1) and
      status in (1,6)

      Criei o seguinte job:

      [b]begin
      dbms_scheduler.create_job(
      job_name => ‘APO_VENC_JOB_SCHEDULE’
      ,job_type => ‘PLSQL_BLOCK’
      ,job_action => ‘begin prc_apolice_vencida; end;’
      ,start_date => SYSTIMESTAMP
      ,repeat_interval => ‘FREQ=DAILY’
      ,end_date => NULL
      ,enabled => TRUE
      ,comments => ‘Altera status apólices vencidas não renovadas.’);
      end;
      /[/b]

      e, a seguinte procedure:

      [b]create or replace procedure prc_apolice_vencida as
      begin
      update apolices
      set status = ‘3’
      where fim between ’01/31/2012′ and (sysdate – 1) and status in (1,6);
      end;[/b]

      No entanto, não consegui o resultado esperado. Que seria de o oracle atualizar automaticamente. Alguém pode dar uma luz. obrigado!

      #103852
      Avatar de rmanrman
      Participante

        @israelpa

        Onde está sendo feito o COMMIT?

        Você disse que não deu certo, mas o que não deu certo? Não houve a atualização ou atualização foi feito no horário errado?

        #103853
        Avatar de israelpaisraelpa
        Participante

          rman,

          Autocommit no próprio ambiente do Apex, tela de SQL Commands. Não houve a atualização.

          #103858
          Avatar de rmanrman
          Participante

            @israelpa

            Autocommit no próprio ambiente do Apex ? 😯

            Isso é o job agendado, não tem nenhuma ligação com o APEX, pelo que eu percebi, não houve atualização por que não foi feito o COMMIT.

            #103864
            Avatar de Douglas Paiva de SousaDouglas Paiva de Sousa
            Participante

              Pelo que percebi está faltando commit mesmo, porque isso é um job que está executando diretamente no DB sem qualquer relação com o APEX, acredito que se você recompilar a sua procedure desta maneira vá funcionar.


              create or replace procedure prc_apolice_vencida as
              begin
              update apolices
              set status = '3'
              where fim between '01/31/2012' and (sysdate - 1) and status in (1,6);
              commit;
              end;

              Att,

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