Je dois créer une procédure stockée dans SQL Server 2008 qui mettra à jour une table en fonction de certaines valeurs. L'astuce ici est que j'ai besoin de rechercher récursivement la table jusqu'à ce que je trouve la valeur que je recherche, puis mettre à jour l'enregistrement en cours. Par exemple, j'ai une table Employés qui contient 3 colonnes:Sql Server 2008 Processus stocké récursif
EMPLOYEEID
ManagerID
FamilyId
Pour chaque EmployeeId dans le tableau, je veux obtenir son ManagerID. Ensuite, si le ManagerID! = 0, allez chercher le ManagerId du ManagerId actuel (chaque ManagerId pointera vers un EmployeeId) - continuez avec ceci jusqu'à ce que j'arrive au gestionnaire de niveau supérieur (où ManagerId == 0).
Une fois que je trouve le gestionnaire de niveau supérieur, je veux mettre à jour la colonne FamilyId dans l'enregistrement original qui a démarré le processus avec la valeur du dernier EmployeeId du processus ci-dessus.
Fondamentalement, je dois le faire avec chaque enregistrement de la table. J'essaye de mettre le FamilyId à la valeur du gestionnaire de racine pour tous les employés et directeurs dans la hiérarchie.
Je ne suis pas sûr si je devrais utiliser un curseur ou un CTE pour faire ceci - ou juste le faire dans le code.
Toute aide est grandement appréciée.
Merci!
vous devriez poster cette question dans StackExchange [experts dba site] (http://dba.stackexchange.com/) – CoderHawk
@Sandy - C'est question de programmation non une question sur l'administration des bases de données. –
Ne résulte-t-il pas de votre description que 'FamilyId' sera le même pour tous les 'subordonnés' d'un employé 'root' arbitraire? Si oui, pourquoi toujours aller en haut de l'arbre? –