Insert num determinado horário

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
vonzodas
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Qua, 20 Jun 2012 9:00 am

Bom dia, estou com uma duvida que acredito ser simples: gostaria de saber como faço alimentar uma tabela (B) de forma automática em determinados horários a partir de um select numa tabela (A). Ex.:

Tabela A (as 09h00)
Leito - Status
1 - Ocupado
2 - Livre
3 - Ocupado

Será inserido na Tabela B
PK - Leito - Status - Data/Hora
1 - 1 - Ocupado - 03/04/2013 09:00:00
2 - 2 - Livre - 03/04/2013 09:00:00
3 - 3 - Ocupado - 03/04/2013 09:00:00

Tabela A (ao 12h00)
Leito - Status
1 - Ocupado
2 - Ocupado
3 - Ocupado

Será inserido na Tabela B
PK - Leito - Status - Data/Hora
4 - 1 - Ocupado - 03/04/2013 12:00:00
5 - 2 - Ocupado - 03/04/2013 12:00:00
6 - 3 - Ocupado - 03/04/2013 12:00:00

E no final a tabela B ficaria
PK - Leito - Status - Data/Hora
1 - 1 - Ocupado - 03/04/2013 09:00:00
2 - 2 - Livre - 03/04/2013 09:00:00
3 - 3 - Ocupado - 03/04/2013 09:00:00
4 - 1 - Ocupado - 03/04/2013 12:00:00
5 - 2 - Ocupado - 03/04/2013 12:00:00
6 - 3 - Ocupado - 03/04/2013 12:00:00

Não sei se ficou claro, mas a tabela A seria uma que mostra a situação dos Leitos do Hospital, e a tabela B foi criada para calcularmos a taxa de ocupação desses leitos durante o dia
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Fala Vonzodas !

Então, você poderia desenvolver uma rotina PL/SQL que leria a tabela A e popularia a tabela B com as informações obtidas no horário de execução. Este seria o primeiro passo.

O segundo passo seria agendar a rotina PL/SQL. Isso poderia ser feito no oracle via DBMS_JOB ou DBMS_SCHEDULLER. Estas duas packages da ORACLE tem a capacidade de executarem a sua rotina PL/SQL nos horários que você programar. Se você não deseja agendar a execução desta rotina pelo ORACLE, você pode usar o comando AT (tarefa agendada, se o SO do Banco for Windows) ou o CRONTAB (se o sistema for UNIX/LINUX).

Abraços e se tiver dúvidas, continue postando por aqui.

Sergio Coutinho
Responder
  • Informação