CREATE PROCEDURE dbo.AddOrUpdateUser
AS
DECLARE
@MatriculeSalarie AS nvarchar(50),
@NumSalarie AS nvarchar(50),
@Nom AS nvarchar(50),
@Prenom AS nvarchar(50),
@Num_adherent AS int,
@Situation_Familiale AS nvarchar(50),
@Nb_Enfant AS int,
@Categorie AS nvarchar(50),
@Service AS nvarchar(50),
@Famille_Categorie AS nvarchar(50)
-- Utilisation d'un curseur pour parcourir tout les données
DECLARE
Curseur1 CURSOR FOR
SELECT DISTINCT MatriculeSalarie, SA_CompteurNumero, Nom, Prenom, Num_Adhesion, SituationFamille, NB_Enfant, Catégorie, Service
FROM VIEW_SAl_Information
WHERE (DateHist IS NULL) AND (hstDate_Famil IS NULL)
ORDER BY SA_CompteurNumero
OPEN Curseur1
FETCH NEXT FROM Curseur1 INTO @MatriculeSalarie , @NumSalarie , @Nom , @Prenom ,@Num_adherent , @Situation_Familiale ,@Nb_Enfant ,@Categorie , @Service
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS(SELECT Matricule FROM dbo.Dossier_Personnel WHERE (dbo.Dossier_Personnel.Matricule = @MatriculeSalarie))
-- Dans cette partie, le Compte existe déja, on a donc juste besoin de rafraichir les Informations
BEGIN
UPDATE
dbo.Dossier_Personnel
SET
dbo.Dossier_Personnel.Nom = @Nom,
dbo.Dossier_Personnel.Prenom = @Prenom,
dbo.Dossier_Personnel.Num_adherent = @Num_adherent,
dbo.Dossier_Personnel.Situation_Familiale = @Situation_Familiale,
dbo.Dossier_Personnel.Nb_Enfant = @Nb_Enfant,
dbo.Dossier_Personnel.Categorie = @Categorie,
dbo.Dossier_Personnel.Service = @Service
WHERE
dbo.Dossier_Personnel.Matricule = @MatriculeSalarie
END
ELSE
-- Dans cette partie, le compte n'existe pas, on va donc le créer
BEGIN
INSERT INTO dbo.Dossier_Personnel
(Matricule,
NumSalarie,
Nom,
Prenom,
Num_adherent,
Situation_Familiale,
Nb_Enfant,
Categorie,
Service)
VALUES
(@MatriculeSalarie,
@NumSalarie,
@Nom,
@Prenom,
@Num_adherent,
@Situation_Familiale,
@Nb_Enfant,
@Categorie,
@Service)
END
FETCH NEXT FROM Curseur1 INTO @MatriculeSalarie , @NumSalarie , @Nom , @Prenom ,@Num_adherent , @Situation_Familiale ,@Nb_Enfant ,@Categorie , @Service
END
CLOSE Curseur1
DEALLOCATE Curseur1