Home » Non-English Forums » French » varier le nom des tables
varier le nom des tables [message #445364] |
Mon, 01 March 2010 03:31 |
bonoua
Messages: 2 Registered: March 2010 Location: Lomé
|
Junior Member |
|
|
Salut à Tous !
Je suis débutante en oracle et nouvelle sur ce forum et j ai besoin d 'aide .
Voici ma procedure :
PROCEDURE p_trafic IS
cursor c1 is
select distinct (to_char(DATDEB_COM,'DAY'))jour,'[07H-19H[' classe, h.code_agregat,libel,
sum(duree)duree_sec, floor(sum(duree)/60) duree_mn,
count(1) nbre_appels, sum(mnt_com) ca_HT
from H_COM_A2009_P05_TA h, p_code_agregat p
where h.code_agregat = p.code_agregat
and to_number(to_char(DATDEB_COM,'HH24')) between 7 and 18
and trunc(DATDEB_COM) not in (select dat_jour from p_tabjour)
--and nd ='2250833'
group by to_char(DATDEB_COM,'DAY') ,'[7H-19H[' , h.code_agregat,libel;
l_c1 c1%rowtype;
v_ligne varchar2(255);
fichier_result Text_IO.File_Type;
i number:=0;
v_agregat number;
v_date date;
v_heure varchar2(2);
v_jour varchar2(30);
v_classe varchar2(15);
v_montant number;
v_duree_sec number;
v_duree_mn number;
v_libel varchar2(20);
v_nbre number ;
--var1 varchar2(30);
v_total1 number:=0;
v_total2 number:=0;
v_total3 number:=0;
v_total4 number:=0;
v_total5 number:=0;
var1 varchar2(30);
v_com date;
BEGIN
fichier_result:= Text_IO.Fopen(:B_OPTIONS.FICHIER, 'w');
open c1;
--titre
v_ligne := 'COMPORTEMENT DES CLIENTS ';
Text_IO.Put_Line(fichier_result, v_ligne);
--entetes
v_ligne := 'JOUR;CLASSE;CODE_AGREGAT;LIBELLE;DUREE_SEC; DUREE_MN; NBRE_APPELS; CA_HT';
Text_IO.Put_Line(fichier_result, v_ligne);
loop
fetch c1 into l_c1;
exit when c1%notfound;
v_jour :=l_c1.jour;
v_classe :=l_c1.classe;
v_agregat :=l_c1.code_agregat;
v_libel :=l_c1.libel;
v_montant:=l_c1.ca_ht;
v_duree_sec:=l_c1.duree_sec;
v_duree_mn:=l_c1.duree_mn;
v_nbre :=l_c1.nbre_appels;
v_ligne := l_c1.jour||';'||l_c1.classe||';'||l_c1.code_agregat||';'||l_c1.libel||';'||
l_c1.duree_sec||';'||l_c1.duree_mn||';'||l_c1.nbre_appels| |';'||l_c1.ca_ht;
Text_IO.Put_Line(fichier_result, v_ligne);
v_total1 :=v_total1+l_c1.duree_sec;
v_total2 :=v_total2+l_c1.duree_mn;
v_total3 :=v_total3+l_c1.nbre_appels;
v_total4 :=v_total4+l_c1.ca_ht;
insert into trafic_tgt2009
( JOUR,CLASSE,AGREGAT,LIBEL ,DUREE_SEC, DUREE_MN,NBRE_APPELS,CA_HT, MOIS,ANNEE)
values (v_jour,v_classe,v_agregat,v_libel,v_duree_sec,v_duree_mn,
v_nbre,v_montant,:B_OPTIONS.p_mois,:B_OPTIONS.p_annee);
commit;clear_message;
end loop;
close c1;
v_ligne := 'TOTAL;'||';'||';'||';'||v_total1||';'||
v_total2||';'||v_total3||';'||v_total4;
Text_IO.Put_Line(fichier_result, v_ligne);
Text_IO.Fclose(fichier_result);
END;
Cette procédure marche quand le nom de la table est fiée en dure.
J 'aimerai la faire varier en précisant l 'année et le mois comme paramètre. Si je fais année 2009 et mois Mai la table devient table H_COM_A2009_P05_TA .
Si je fais année 2010 , mois 03 la table devient H_COM_A2010_P03_TA.
Exemple
PROCEDURE p_trafic (p_annee number, p_mois varchar2) IS
[Updated on: Mon, 01 March 2010 05:55] by Moderator Report message to a moderator
|
|
|
Goto Forum:
Current Time: Thu Apr 18 23:06:52 CDT 2024
|