Home » Non-English Forums » French » varier le nom des tables
varier le nom des tables [message #445364] Mon, 01 March 2010 03:31 Go to previous message
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

 
Read Message
Read Message
Read Message
Previous Topic: Problème de récuperation de BDD ORA-01190
Next Topic: Piloter l'assistant par batch
Goto Forum:
  


Current Time: Thu Apr 18 23:06:52 CDT 2024