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
| CREATE OR REPLACE FUNCTION "public"."copy_semaine" (annee1 integer, semaine1 integer, annee2 integer, semaine2 integer) RETURNS boolean AS
$body$
DECLARE
annee_in alias for $1;
semaine_in alias for $2;
annee_out alias for $3;
semaine_out alias for $4;
--
xnom_societe text;
xnom_interimaire text;
xprenom_interimaire text;
xstatus_mission text;
xnom_atelier text;
xjour_arrivee text;
xcode_prestataire text;
nbrec integer;
--
cOrigine CURSOR (cAnnee integer, cSemaine integer) IS
SELECT nom_societe, nom_interimaire, prenom_interimaire,
status_mission, nom_atelier, jour_arrivee, code_prestataire
FROM interim_feuille
WHERE annee = cAnnee
AND numero_semaine = cSemaine
AND status_mission = 'MC';
BEGIN
OPEN cOrigine(annee_in, semaine_in);
FETCH cOrigine INTO xnom_societe, xnom_interimaire, xprenom_interimaire, xstatus_mission, xnom_atelier, xjour_arrivee, xcode_prestataire;
WHILE FOUND LOOP
select into nbrec count(*) from interim_feuille
where nom_societe = xnom_societe
and nom_interimaire = xnom_interimaire
and prenom_interimaire = xprenom_interimaire
and annee = annee_out
and numero_semaine = semaine_out;
if nbrec = 0 then
insert into interim_feuille
(nom_societe, numero_semaine, nom_interimaire, prenom_interimaire, status_mission,
nom_atelier, jour_arrivee, code_prestataire, annee)
values
(xnom_societe, semaine_out, xnom_interimaire, xprenom_interimaire, xstatus_mission,
xnom_atelier, xjour_arrivee, xcode_prestataire, annee_out);
end if;
FETCH cOrigine INTO xnom_societe, xnom_interimaire, xprenom_interimaire, xstatus_mission, xnom_atelier, xjour_arrivee, xcode_prestataire;
END LOOP;
RETURN true;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER |
Partager