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
|
CREATE OR REPLACE FUNCTION "public"."ajout_contact" (params text) RETURNS SETOF "public"."typeret" AS
$body$
declare
paramstemp text;
resultaddadr public.typeret;
resultaddcont public.typeret;
begin
-- on appelle la fonction add_adresse pour ajouter les données dans la table adresse, en précisant qu'elle n'est pas obligatoire
for resultaddadr in select * from add_adresse(params, false) loop
if(resultaddadr.nouveau <> false) or (resultaddadr.nouveau <> null) then
-- on ajoute le noeud idadr dans le xml
paramstemp := addxmlnodewithparentnode(params, 'PARAMETRE', resultaddadr.id, 'name="idadr" type="integer"', 'PARAMETRES');
else
paramstemp := params;
end if;
-- on appelle la fonction add_contact pour ajouter les données dans la table contact
for resultaddcont in select * from add_contact(paramstemp) loop
return next resultaddcont;
end loop;
end loop;
exception
when raise_exception then
rollback;
when others then
begin
generatedmsg := generate_message( 'MESSAGEERREUR', SQLERRM, 'HAUTE', 'Insertion impossible');
select into enreg generatedmsg as messageinfo,
null as selected,
null as id,
null as valeur,
null as nouveau;
return next enreg;
end;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
---------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "public"."add_contact" (params text) RETURNS SETOF "public"."typeret" AS
$body$
declare
enreg public.typeret;
idnewcont integer;
begin
insert into contact ( Champ1, Champ2) values ( Val1, Val2);
idnewcont := currval('contact_idcont_seq'::regclass);
select 'OK', null, idnewcont, null, true
into enreg;
--on retourne l'identifiant du contact inséré
return next enreg;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; |
Partager