1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
ACCEPT mode CHAR PROMPT 'Voulez-vous travailler sur toute l''année ou pour un mois précis (O,o/N,n) '
ACCEPT age CHAR PROMPT 'Saisisser l''age de la personne > : '
ACCEPT date_saisie DATE FORMAT 'DD/MM/YYYY'
PROMPT 'Entrer la période de recherche au format JJ/MM/YYYY ou taper sur entré si recherche sur toute l''année : '
declare
date_travail date;
requete1 varchar(1024) ;
requete2 varchar(1024) ;
begin
requete1 := '
SELECT nat.idf_agent MATRICULE ,
his.nom_usuel || '' '' || his.Nom_prenom NOM_PRENOM,
to_char(date_travail,''YYYY'')-to_char(ide.dat_naissance,''YYYY'') AGE,
to_char(ide.dat_naissance,''DD/MM/YYYY'') DATE_NAISSANCE
FROM OG.IDENT ide,
OG.IDENT_HIS his,
RH.AGTNAT nat
WHERE ide.ident_id = his.ident_id
AND nat.ident_id = his.ident_id
AND cod_gestion in (''0'',''2'')
and idf_agent in (select distinct idf_agent from agtpai)
AND nat.cod_coll =''toto''
AND to_number( to_char( date_travail,''YYYY'' ) ) - to_number(to_char(ide.dat_naissance,''YYYY''))= &age
AND to_date(to_char(his.dat_debut,''DD/MM/YYYY''),''DD/MM/YYYY'') <= date_travail
AND to_date(to_char(his.dat_fin,''DD/MM/YYYY''),''DD/MM/YYYY'') > date_travail
ORDER BY MATRICULE ';
requete2 := '
SELECT nat.idf_agent MATRICULE ,
his.nom_usuel || '' '' || his.Nom_prenom NOM_PRENOM,
to_char(sysdate,''YYYY'')-to_char(ide.dat_naissance,''YYYY'') AGE,
to_char(ide.dat_naissance,''DD/MM/YYYY'') DATE_NAISSANCE
FROM OG.IDENT ide,
OG.IDENT_HIS his,
RH.AGTNAT nat
WHERE ide.ident_id = his.ident_id
AND nat.ident_id = his.ident_id
AND cod_gestion in (''0'',''2'')
and idf_agent in (select distinct idf_agent from agtpai)
AND nat.cod_coll =''toto''
AND to_number( to_char( date_travail,''YYYY'' ) ) - to_number(to_char(ide.dat_naissance,''YYYY''))= &age
AND to_number(to_char(date_travail,''MM'')) = to_number(to_char(ide.dat_naissance,''MM''))
AND to_date(to_char(his.dat_debut,''DD/MM/YYYY''),''DD/MM/YYYY'') <= date_travail
AND to_date(to_char(his.dat_fin,''DD/MM/YYYY''),''DD/MM/YYYY'') > date_travail
ORDER BY MATRICULE ';
if ( '&mode' in ('O','o') ) then
date_travail := sysdate;
execute immediate requete1 ;
else
date_travail := to_date ('&date_saisie','DD/MM/YYYY');
execute immediate requete2;
end if;
end;
/ |
Partager