Neurasthenie
Messages postés6Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention10 février 2009
-
3 févr. 2009 à 15:44
Neurasthenie
Messages postés6Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention10 février 2009
-
4 févr. 2009 à 09:36
Bonjour,
Je travailles actuellement sur un projet de migration (de base à base) et j'écris donc les procédures stockées qui permettront d'aller chercher les données d'une base pour les insérer dans la nouvelle.
Voici mon soucis :
J'ai tout d'abord une table "Famille" créée correctement ayant pour clé primaire un CodFamille (et tout plein d'autres informations inutiles pour mon problème)
Je dois remplir une table "Coefficient", voici sa représentation au niveau MLD :
Coefficient (CodFamilleCOE, CodMoisCOE, ...........)
Je dois donc pour la remplir, récupérer chaque code famille de ma table famille (pour cela aucun soucis) et insérer pour chaque code famille des valeurs de 1 à 12
Un petit exemple :
Table Famille :
CodFamille | Lib
111 | Fam1
112 | Fam2
Table Coefficient :
CodFamilleCOE | CodMoisCOE
111 | 1
111 | 2
.... | ...
111 | 12
112 | 1
Et ainsi de suite.
Donc voila je bloque pour insérer ces 12 codes mois pour chaque code de famille
J'espère avoir été clair
Merci.
PS : Je travaille sous SQL Server Enterprise Manager
Neurasthenie
Messages postés6Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention10 février 2009 4 févr. 2009 à 09:36
J'ai donc bien réussi à faire ce que je voulais grâce à un curseur,
Merci beaucoup.
J'espère que l'idée plaira à mon tuteur de stage.
Pour ceux à qui ça peut poser problème voici un extrait de mon code pour l'utilisation du curseur :
DECLARE @i int
DECLARE @Mois nchar(3) -- Numero du mois du mois
DECLARE @Famille nchar(3) -- Numéro de la famille
-- Déclaration du curseur
DECLARE ListFam CURSOR FOR
SELECT CodFamille
FROM FAMILLE
-- Ouverture du curseur
OPEN ListFAM
-- On se place sur le premier enregistrement
FETCH ListFam INTO @Famille
-- Parcours des résultats de la requête
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @i = 1
WHILE (@i <= 12)
BEGIN
SET @Mois = @i
INSERT INTO #TMPCoefs (CodFamilleCOETMP, CodMoisTMP)
VALUES (@Famille, @Mois)
SET @i = @i + 1
END
-- On récupère l'enregistrement suivant
FETCH ListFam INTO @Famille
END
-- Fermeture du curseur
CLOSE ListFam
-- Libération de l'espace0
DEALLOCATE ListFam
Voila, je travailles avec des tables temporaire donc après il y à l'ajout de cette table (#TMPCoefs) dans une table réelle. Il y a un peu de bidouillage entre la variable i et la variable mois... pour des histoires de conversions de type ça m'a paru un peu plus simple.
Bonne journée, et merci de l'aide Nhervagault [auteur/NHERVAGAULT/84425.aspx ]
Neurasthenie
Messages postés6Date d'inscriptionmardi 3 février 2009StatutMembreDernière intervention10 février 2009 4 févr. 2009 à 08:45
Salut,
Tout d'abord merci pour ta réponse !
L'idée du curseur ne m'étais pas venue à l'esprit.. c'est vrai que ce n'est pas une mauvaise idée je vais essayer ça aujourd'hui... Je te dirais si j'ai réussi.
Sinon pour ce qui concerne la modélisation de la base, elle n'est pas que moi
Je suis en fait qu'un simple stagiaire (en BTS) à qui on a donné un projet de migration.. donc tout est préparer je dois remplir les bases..
Donc même si ça ne convient pas tout à fait.. je n'ai pas le choix !