Gracias por tu ayuda!!!! Te comento que he cambiado la estructura de mi tabla ahora la tengo asi:
create table parqueo(
correlativo integer primary key,
fechaEntrada date,
FechaSalida date
);
//esto es para el autoincrementable
create sequence secuencia2
start with 1
increment by 1
nomaxvalue;
create or replace trigger secuencia2
before insert on parqueo
for each row
begin
select secuencia2.nextval into:new.correlativo from dual;
end;
// los insert que tengo para probar:
insert into parqueo values(1,to_date('4-11-2012 10:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 11:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('4-11-2012 11:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 12:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('4-11-2012 9:18:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 11:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('4-11-2012 7:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 9:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('4-11-2012 7:15:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 8:45:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('4-11-2012 8:10:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('4-11-2012 13:08:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('5-11-2012 10:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('5-11-2012 11:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('5-11-2012 10:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('5-11-2012 11:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 7:15:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 8:45:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 8:10:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 13:08:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 10:45:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 13:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 10:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 15:22:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 16:45:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 18:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('6-11-2012 17:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('6-11-2012 20:22:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('1-10-2012 16:45:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('1-10-2012 18:28:00', 'DD-MM-YYYY HH24:MI:SS'))
insert into parqueo values(1,to_date('1-10-2012 17:28:00', 'DD-MM-YYYY HH24:MI:SS'),to_date('1-10-2012 20:22:00', 'DD-MM-YYYY HH24:MI:SS'))
en esta tabla deseo almacenar el resultado para luego consultarla:
create table resultado(
rango varchar2(50),
cantidad integer
);
//mi procedimiento almacenado
create or replace procedure pa_parqueo((dia date,mes date,anio date)
is
cursor c_park is
SELECT to_char(fechaEntrada, 'dd/mm/yyyy'),
to_char(fechaEntrada,' HH24' ),
count (to_char(fechaEntrada,' HH24' ) ) from parqueo
where to_char(fechaEntrada,' HH24' ) >6
and fechaEntrada> to_date('04/11/2012 ','DD-MM-YYYY ' )
GROUP BY to_char(fechaEntrada, 'dd/mm/yyyy'),to_char(fechaEntrada,' HH24' );
m_reg c_park%rowtype;
begin
open c_park;
loop
fetch c_park into m_reg;
exit when c_park%notfound;
insert into resultado values(rango,m_reg.cantidad);
end loop;
close c_park;
commit;
end;
El cursor me devuelve cuantos carros hay por hora, pero aun no se como manipular el cursor para que me de el resultado esperado o si el cursor estara bien asi. Los resultados al ejecutar el procedimiento almacenado deberia ser asi,
por ejemplos con los insert que tengo en mi tabla serian:
POR AÑO
execute pa_parqueto(0,0,2012) //todo el 2012
RANGO(horas) CANTIDAD(vehiculos)
7 - 8 3
8 - 9 5
9 - 10 4
10 - 11 8
11 - 12 9
12 - 13 5
13 - 14 4
14 - 15 1
15 - 16 1
16 - 17 2
17 - 18 4
18 - 19 4
19 - 20 2
20 - 21 2
si consulto por MES los datos serian:
execute pa_parqueto(0,10,2012) //todo el mes de octubre del 2012
RANGO(horas) CANTIDAD(vehiculos) //solo tienen que aparecer los rangos de las horas en que hubo vehiculos
16 - 17 1 como en este caso solo hubo desde la 16 horas hasta las 21 horas
17 - 18 2
18 - 19 2
19 - 20 1
20 - 21 1
si consulto por DIA los datos serian:
execute pa_parqueto(4,11,2012) //todos los vehiculos estacionados el dia 4 de noviembre del 2012
RANGO(horas) CANTIDAD(vehiculos) //solo los rangos de vehiculos estacionados hasta esa hora, las demas horas no
7 - 8 3 no aparecen porque no hubo vehiculos en esas horas
8 - 9 4
9 - 10 3
10 - 11 3
11 - 12 4
12 - 13 2
13 - 14 1
cada vehiculo debe aparecer en cada hora desde su entrada hasta su salida
He intentado hacer este procedimiento pero se me ha hecho muy dificil, ya que estoy aprendiendo a usar PL, si me pudieras ayudar te lo agradeceria mucho ya que me dara muchos conocimientos para manejar cursores y procedimientos, pues he hecho algunos procedimientos pero no han sido tan complicados como este.
Saludos!!!!!!!