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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| create or replace package POIR_1_PKG as
PROCEDURE proc_ajouter(p_nom in VARCHAR2,nom in VARCHAR2,n_app_r in VARCHAR2,n_civ_r in VARCHAR2,t_rue_r in VARCHAR2,n_rue_r in VARCHAR2,cp_r in VARCHAR2,cellu_r in VARCHAR2,v_r in VARCHAR2,p_r in VARCHAR2,n_app_b in VARCHAR2,n_civ_b in VARCHAR2,t_rue_b in VARCHAR2,n_rue_b in VARCHAR2,cp_b in VARCHAR2,cellu_b in VARCHAR2,v_b in VARCHAR2,p_b in VARCHAR2);
END POIR_1_PKG;
/**************** BODY ******************************************************/
create or replace package BODY POIR_1_PKG as
PROCEDURE proc_ajouter(p_nom in VARCHAR2,nom in VARCHAR2,n_app_r in VARCHAR2,n_civ_r in VARCHAR2,t_rue_r in VARCHAR2,n_rue_r in VARCHAR2,cp_r in VARCHAR2,cellu_r in VARCHAR2,v_r in VARCHAR2,p_r in VARCHAR2,n_app_b in VARCHAR2,n_civ_b in VARCHAR2,t_rue_b in VARCHAR2,n_rue_b in VARCHAR2,cp_b in VARCHAR2,cellu_b in VARCHAR2,v_b in VARCHAR2,p_b in VARCHAR2)
is
id_Type_Rue number;
id_Ville number;
id_Type_Adresse number;
id_adresse_res number;
id_adresse_bur number;
Etape number;
l_count number;
Begin
--BEGIN TRANSACTION 'debut';
Etape := 0;
-- Prendre l id du type de rue de la residence
select IdTypeRue into id_Type_Rue from TYPE_RUE where Nom = t_rue_r;
Etape := Etape + 1;
-- Prendre l id de la ville de la residence
select idVille into id_Ville from VILLE where Nom = v_r AND IdProvince = (select IdProvince from PROVINCE where Nom = p_r);
Etape := Etape + 1;
-- SAVEPOINT ajout_adresse_res;
-- L'adresse existe deja ne pas la rajouter dans la base, prendre son id
select count(*) into l_count from Adresse where
UPPER(NumeroAppartement) = UPPER(n_app_r) AND
UPPER(NumeroCivic) = UPPER(n_civ_r) AND
idTypeRue = id_Type_Rue AND
UPPER(NomRue) = UPPER(n_rue_r) AND
UPPER(Cellule) = UPPER(cellu_r) AND
UPPER(CodePostal) = UPPER(cp_r) AND
IdVille = id_Ville AND
IdTypeAdresse = 2;
Etape := Etape + 1;
if (l_count = 0) then -- donc l'adresse n'existe pas dans la table
Etape := Etape + 1;
insert into ADRESSE (NumeroAppartement,NumeroCivic, IdTypeRue,NomRue,Cellule,CodePostal,IdVille,IdTypeAdresse) values(n_app_r,n_civ_r,id_Type_Rue,n_rue_r, cellu_r,cp_r,id_Ville,2);
end if;
Etape := Etape + 1;
-- Prendre idadresse de la residence
select IdAdresse into id_adresse_res from Adresse where
UPPER(NumeroAppartement) = UPPER(n_app_r) AND
UPPER(NumeroCivic) = UPPER(n_civ_r) AND
idTypeRue = id_Type_Rue AND
UPPER(NomRue) = UPPER(n_rue_r) AND
UPPER(Cellule) = UPPER(cellu_r) AND
UPPER(CodePostal) = UPPER(cp_r) AND
IdVille = id_Ville AND
IdTypeAdresse = 2;
Etape := Etape + 1;
-- Prendre l id du type de rue du bureau
select IdTypeRue into id_Type_Rue from TYPE_RUE where Nom = t_rue_b;
Etape := Etape + 1;
-- Prendre l id de la ville du bureau
select idVille into id_Ville from VILLE where Nom = v_b AND IdProvince = (select IdProvince from PROVINCE where Nom = p_b);
-- SAVEPOINT ajout_adresse_bur;
-- Si l'adresse existe deja ne pas la rajouter dans la base, prendre son id
select count(*) into l_count from Adresse where
UPPER(NumeroAppartement) = UPPER(n_app_b) AND
UPPER(NumeroCivic) = UPPER(n_civ_b) AND
idTypeRue = id_Type_Rue AND
UPPER(NomRue) = UPPER(n_rue_b) AND
UPPER(Cellule) = UPPER(cellu_b) AND
UPPER(CodePostal) = UPPER(cp_B) AND
IdVille = id_Ville AND
IdTypeAdresse = 1;
if (l_count = 0) then -- donc l'adresse n'existe pas dans la table
insert into ADRESSE(NumeroAppartement,NumeroCivic, IdTypeRue,NomRue,Cellule,CodePostal,IdVille,IdTypeAdresse) values(n_app_b,n_civ_b,id_Type_Rue,n_rue_b, cellu_b,cp_b,id_Ville,1);
End if;
-- Prendre idadresse du bureau
select IdAdresse into id_adresse_bur from Adresse where
UPPER(NumeroAppartement) = UPPER(n_app_b) AND
UPPER(NumeroCivic) = UPPER(n_civ_b) AND
idTypeRue = id_Type_Rue AND
UPPER(NomRue) = UPPER(n_rue_b) AND
UPPER(Cellule) = UPPER(cellu_b) AND
UPPER(CodePostal) = UPPER(cp_B) AND
IdVille = id_Ville AND
IdTypeAdresse = 1;
-- AJOUT DANS TABLE cONTACTS
-- SAVEPOINT ajout_contacts;
Insert into Contacts(Matricule,Nom,Prenom,IdTypeRessource,IdAdresseResidence,IdFonction,IdAdresseBureau,Courriel,IdDepartement) values(mat,nom, p_nom, 2, id_adresse_res, 3, id_adresse_bur,courriel,205);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
BEGIN
ROLLBACK; -- TO ajout_adresse_res;
RAISE_APPLICATION_ERROR (-20001,SQLERRM(SQLCODE) || ' Erreur signalee ETAPE : ' || Etape);
END;
End;
END POIR_1_PKG; |