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
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' )
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
CREATE PROCEDURE spGenererWBS
( 
   @WBSParent  VARCHAR(40)
)
AS
BEGIN
   ...
END
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à.

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