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
| CREATE OR REPLACE PROCEDURE test IS
v_sigle NUMBER (1);
v_datecreation NUMBER (1);
v_raisonsociale NUMBER (1);
v_idactivite NUMBER (1);
BEGIN
MERGE INTO nfiabilisation nf
USING ( SELECT t.idtier, t.sigle, t.datecreation, t.raisonsociale,
infop.idactivite
FROM tier t, infosactiviteprofessionnelle infop
WHERE (t.sigle IS NULL)
OR (t.datecreation IS NULL)
OR (t.raisonsociale IS NULL)
OR (infop.idactivite IS NULL)
AND ( t.typepersonne = 'PP'
AND t.idagenteco IN (32)
AND t.idactiviteprof = infop.idactiviteprof) )ti
ON (nf.idtier = ti.idtier)
begin
IF ti.sigle IS NULL
THEN
v_sigle := 1;
ELSE
v_sigle := 0;
END IF;
IF ti.datecreation IS NULL
THEN
v_datecreation := 1;
ELSE
v_datecreation := 0;
END IF;
IF ti.raisonsociale IS NULL
THEN
v_raisonsociale := 1;
ELSE
v_raisonsociale := 0;
END IF;
IF ti.idactivite IS NULL
THEN
v_idactivite := 1;
ELSE
v_idactivite:= 0;
END IF;
end;
WHEN MATCHED THEN
UPDATE
SET nf.sigle =v_sigle,nf.datecreation=v_datecreation,nf.raisonsociale=v_raisonsociale,
nf.activiteprincipale=v_idactivite
WHEN NOT MATCHED THEN
INSERT nfiabilisation
(IDTIERAFIAB,idtier,sigle,datecreation,raisonsociale,activiteprincipale,TYPEPERSONNE)
VALUES (nfiabilisation_seq.NEXTVAL,sigledcrs_rec.idtier,v_sigle,v_datecreation,v_raisonsociale,v_idactivite,'PP'
);
COMMIT;
END test;
/ |
Partager