Dúvida Oracle

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Tenho uma tabela de Pedidos contento DataHora do Pedido do Tipo Date.

Todos os Pedidos abertos até as 12h00min devem ser fechados no mesmo dia até as 23h59min

Pedidos abertos partir das 12h01min devem ser encerrados até as 11h59min do dia seguinte.

Como faço isso em oracle ?

:?:
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Job

você tem q criar a procedure que procuro os pedidos e faz os updates e dai e so chamar via job nesse 2 horarios que os pedidos precisam ser encerrados
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Você teria algum exemplo aí para me ajudar ?

Desde já agradeço a atenção.
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Tenho uma tabela de Pedidos contento DataHora do Pedido do Tipo Date.

Todos os Pedidos abertos até as 12h00min devem ser fechados no mesmo dia até as 23h59min

Pedidos abertos partir das 12h01min devem ser encerrados até as 11h59min do dia seguinte.

Os pedidos que forem fechados fora deste prazo preciso mostrar em uma consulta.

Como faço isso em oracle ?
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

eu te mandei exemplo no link.. caso prefira via pl sql developer tem uma interface para criar o job e depois ainda pode ver como ficou o codigo sql

para a query você pode usar o between para as datas
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que o que ele quer é apenas fazer uma CONSULTA disso... Ou seja, mostra o que fechou FORA do período correto.
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

quando ele fala "devem ser fechados" eu entendo que ele quer um job.. mas pode ser so a query ne
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Valeu pela Ajuda e Pelo Link.

Problema Resolvido. :D
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

dr_gori

É isso mesmo que você entendeu. Eu quero apenas fazer a consulta Disso e mostrar o que fechou fora do período.

Você tem alguma sugestão ?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

O MEU REI, isso é mumu com mel de se fazer:

Vou criar uma tabela pra testar:

Selecionar tudo

SQL> create table
  2  thomas_PED ( NRO NUMBER, DT_ABERT DATE, DT_FECH DATE);

Tabela criada.
Vou inserir alguns exemplos dentros:

Selecionar tudo

SQL> BEGIN
  2    INSERT INTO THOMAS_PED VALUES ( 1, trunc(SYSDATE)+.2  , trunc(SYSDATE)+.3);
  3    INSERT INTO THOMAS_PED VALUES ( 2, trunc(SYSDATE)+.3  , trunc(SYSDATE)+1.2);
  4    INSERT INTO THOMAS_PED VALUES ( 3, trunc(SYSDATE)+.4  , trunc(SYSDATE)+.7);
  5    INSERT INTO THOMAS_PED VALUES ( 4, trunc(SYSDATE)+.5  , trunc(SYSDATE)+.8);
  6    INSERT INTO THOMAS_PED VALUES ( 5, trunc(SYSDATE)+.6  , trunc(SYSDATE)+.9);
  7    INSERT INTO THOMAS_PED VALUES ( 6, trunc(SYSDATE)+.7  , trunc(SYSDATE)+1.3);
  8    INSERT INTO THOMAS_PED VALUES ( 7, trunc(SYSDATE)+.8  , trunc(SYSDATE)+1.6);
  9    INSERT INTO THOMAS_PED VALUES ( 8, trunc(SYSDATE)+.9  , trunc(SYSDATE)+1.7);
 10  END;
 11  /

Procedimento PL/SQL concluído com sucesso.

SQL> 
Agora, vamos ver como que está a tabela:

Selecionar tudo

SQL> SELECT 
  2    NRO
  3  , TO_CHAR(DT_ABERT, 'DD/MM/RRRR HH24:MI') DT_ABERT
  4  , TO_CHAR(DT_FECH , 'DD/MM/RRRR HH24:MI') DT_FECH
  5  FROM THOMAS_PED
  6  /

       NRO DT_ABERT         DT_FECH
---------- ---------------- ----------------
         1 06/01/2011 04:48 06/01/2011 07:12
         2 06/01/2011 07:12 07/01/2011 04:48   ** problema
         3 06/01/2011 09:36 06/01/2011 16:48
         4 06/01/2011 12:00 06/01/2011 19:12
         5 06/01/2011 14:24 06/01/2011 21:36
         6 06/01/2011 16:48 07/01/2011 07:12
         7 06/01/2011 19:12 07/01/2011 14:24  ** problema
         8 06/01/2011 21:36 07/01/2011 16:48  ** problema

8 linhas selecionadas.

SQL> 
Agora a query:

Selecionar tudo

SQL> SELECT 
  2    NRO 
  3  , TO_CHAR(DT_ABERT, 'DD/MM/RRRR HH24:MI') DT_ABERT 
  4  , TO_CHAR(DT_FECH , 'DD/MM/RRRR HH24:MI') DT_FECH 
  5  FROM THOMAS_PED 
  6  WHERE  
  7    (    DT_ABERT <= trunc(DT_ABERT)+.5     -- até o meio dia 
  8     AND DT_FECH  >= trunc( DT_ABERT) +1    --fechados no outro dia 
  9    ) 
 10  OR 
 11    (    DT_ABERT >= trunc(DT_ABERT)+.5    -- depois o meio dia 
 12     AND DT_FECH  >= trunc( DT_ABERT) +1.5 --fechados no outro dia até o meio dia 
 13    ) 
 14  / 

       NRO DT_ABERT         DT_FECH 
---------- ---------------- ---------------- 
         2 06/01/2011 07:12 07/01/2011 04:48 
         7 06/01/2011 19:12 07/01/2011 14:24 
         8 06/01/2011 21:36 07/01/2011 16:48 

SQL> 
Voalá :-o
INICIANTE_ORACLE
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Qua, 05 Jan 2011 3:19 pm
Localização: ARAÇATUBA

Valeu Cara Você é Fera.

Muito Obrigado Pela Ajuda.

Resolveu o meu problema :-o :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes