Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lgr

executar varias consultas e armazenar em cursores

Recommended Posts

Pessoal,bom dia!N tenho experiencia com pl/sql no Oracle e preciso de uma ajuda de valia enorme.Ficarei muito grato e ficarei a disposição para contribuir com q puder posteriormente.Fico devendo uma.......Preciso calcular a frequencia em q os funcionários passam na catraca aqui na empresa.Ex: SELECT COUNT(id_func) FROM log_catraca WHERE data_entrada = to_date('01/10/2005 10:00:00','dd/mm/yyyy 24HH:mm:ss')O problema surge porque tenho que calcular dos ultimos 30 dias e de todas horas do dia,ou seja fazer um for dos trinta dias e dentro de cada dia outro das 24 horas do dia, e aí penso que tenho q armazenar em cursores.Bom!os resultados eu insiro numa tabela. as colunas das tabelas seriam data, hora00,hora01,......hora22,hora23.Assim guardo a frequencia de cada hora do dia numa tblpor favor deem pelo menos uma luz......ObrigadoLeandro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá para Calcular nos 30 dias, você pode usar:

 

SQL > SELECT COUNT(id_func) as "Total", data_entrada as "Data Entrada" 	 2	FROM log_catraca 	 3	WHERE data_entrada between to_date('01/10/2005','DD-MM-YYYY') and to_date(31/10/2005','DD-MM-YYYY')	 4	GROUP BY data_entrada;

Agora para todos as horas:

 

SQL > SELECT COUNT(id_func) as "Total", data_entrada as "Data Entrada e Hora" 	 2	FROM log_catraca 	 3	WHERE data_entrada between to_date('01/10/2005 00:00:00','DD-MM-YYYY HH24:MI:SS') 	 4	and to_date(31/10/2005 23:59:59','DD-MM-YYYY HH24:MI:SS')	 5	GROUP BY data_entrada;

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

RODRIGO,valeu pela resposta mas o problema é um pouco maior q issoeu criei uma procedure ela está com o status válido..estou postando ela e acho q vai ser de boa valia p o forum.Se você puder ajudar..achoq falta pouco p funcionar.segue:CREATE OR REPLACEProcedure PAULISTA."FREQ_CALCULADA" (subtrai NUMBER)ISTYPE Teste IS VARRAY(23) OF NUMBER(4) ;vals Teste ;sequenceInt NUMBER;horaI VARCHAR(15);horaF VARCHAR(15); Beginvals(0) := 0;vals(1) := 0;vals(2) := 0;vals(3) := 0;vals(4) := 0;vals(5) := 0;vals(6) := 0;vals(7) := 0;vals(8) := 0;vals(9) := 0;vals(10) := 0;vals(11) := 0;vals(12) := 0;vals(13) := 0;vals(14) := 0;vals(15) := 0;vals(16) := 0;vals(17) := 0;vals(18) := 0;vals(19) := 0;vals(20) := 0;vals(21) := 0;vals(22) := 0;vals(23) := 0;for i in reverse 1..subtrailoop for j in 0..23 loop horaI := (j) || ':00:00'; horaF := (j+1) || ':00:00'; dbms_output.put_line(j); dbms_output.put_line(horaI); SELECT COUNT(*) into vals(i) FROM log_catraca WHERE data_entrada BETWEEN to_date(trunc(SYSDATE-i)||horaI,'dd/mm/yyyy HH24:MI:SS') AND to_date(trunc(SYSDATE-i)||horaF,'dd/mm/yyyy HH24:MI:SS'); end loop;SELECT FREQ.NEXTVAL INTO sequenceInt FROM DUAL;INSERT INTO FREQUENCIA_CALCULADA (id_frequencia,data,h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17, h18,h19,h20,h21,h22,h23) VALUES (sequenceInt,SYSDATE-i,vals(0),vals(1),vals(2),vals(31),vals(41),vals(51),vals(61),vals(71),vals(81),vals(91),vals(10),vals(11),vals(12), vals(13),vals(14),vals(15),vals(16),vals(17),vals(18),vals(19),vals(20),vals(21),vals(22),vals(23));end loop;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual foi o tipo de erro que o Oracle lhe mandou...

 

Assim ajuda a analisar melhor a procedure!

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.