Bonjour à tous,
Je cherche à déterminer un WBS *disponible* (Work Breakdown structure) à partir d'une procédure stockée.
Déclaration de la table contenant déjà des séquences de WBS
Voilà à quoi ressemblerait l'entête de la procédure dont j'ai besion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DECLARE @Table TABLE ( WBS VARCHAR(40) ) INSERT INTO @Table VALUES( '1' ) INSERT INTO @Table VALUES( '1.1' ) INSERT INTO @Table VALUES( '1.1.1' ) INSERT INTO @Table VALUES( '1.2' ) INSERT INTO @Table VALUES( '2' ) INSERT INTO @Table VALUES( '4' )
Donc, imaginons que j'aimerais créer une nouvelle entrée sous le parent '1', il faudrait que la procédure me retourne '1.3.' Car 1.1 et 1.2 existe déjà.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE PROCEDURE spGenererWBS ( @WBSParent VARCHAR(40) ) AS BEGIN ... END
Si je voudrais créer une nouvelle entrée sous le parent '1.1.1', il faudrait que la procédure me retourne '1.1.1.1' Du fait que sous 1.1.1 il n'y a pas encore d'entrée.
Si je passe NULL pour le paramètre WBSParent, alors la fonction devrait me retourner '3', du fait que le WBS à insérer n'a pas de parent. Donc il est générer à partir de la racine
Jusqu'ici, je n'ai pas trouver d'autre solution mise à part utiliser un curseur et tester les WBS en incrémentant de 1 à chaque saut pour déterminer un WBS libre. Toutefois, j'ai lu à plusieurs endroits que les cursors doivent être utilisés qu'en extrême cas. Sinon, garre aux performances.
Avez-vous une meilleure idée ?
Merci
Partager