Exercice Langage SQL : Procédure Stockée et Cursor


Utilisation de Procédure Stockée & Cursor

Travail à Faire:

Créer une procédure Stockée qui a pour rôle de mettre à jour la table USER a partir d'un autre table ou vue.
NB:
- si l'utilisateur  existe déja, on va rafraichir les Informations
- si l'utilisateur  n'existe pas, on va donc le créer 

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283CREATE PROCEDURE dbo.AddOrUpdateUserASDECLARE @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 ENDELSE-- 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 Curseur1DEALLOCATE Curseur1
Article publié le 13 Décembre 2011