|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2008 Messages : 15 ![]() |
Bonjour à tous.
N'ayant pas trouvé réponse à ma question je me décide de poster ici. J'ai réalisé une procédure stockée pour importer des valeurs issues d'automates. Je cherche à boucler sur les valeurs (30 environ). En ce sens je souhaite créer une variable dynamique évaluable comme on peut le faire en PHP. Petit exemple PHP <?php $valeur1 = 10; $compteur = 1; echo ${'valeur'.$compteur}; //Affiche 10 ?> Voici une partie de ma procédure stockée WHILE @Compteur <= @EvenementNbValeurs BEGIN INSERT INTO Valeur(EvenementId, MachineId, MessageId, DetailId, Valeur) VALUES (@EvenementId, @MachineId, @MessageId, @Compteur, VariableDynamique); SET @Compteur = @Compteur + 1; END VariableDynamique = @('Valeur'+@Compteur) Je vous remercie de votre aide. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Vous n'avez surement pas besoin de boucle pour faire ça... D'ou viennent vos données ? pouvez vous mettre la procédure stockée en entier ? |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
Pouvez vous poster l'intégralité de votre procédure?vous pouvez surement en effet vous passer de boucle...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Étudiant Inscription : novembre 2008 Messages : 15 ![]() |
Alors,
j'ai une table IMPORT de transition qui va me permettre d'importer les événements des automates. Un automate enregistre au maximum 30 valeurs. Voici la table IMPORT que me donne les automaticiens : EvenementId MachineId MessageId EvenementPhase EvenementNbValeurs EvenementDate EvemenentCommentaire Valeur1 Valeur2 Valeur3 Valeur4 ... Valeur30 A partir de cette table j'ai crée un job qui va appeler mes procédures stockées toutes les heures pour importer ces données. La première procédure importe les événements sans les valeurs La seconde s'occupe d'insérer les valeurs. Première procédure stockée "sp_import_evenement": Code :
Code :
Je vous joints également la modélisation. Je vous remercie |
||||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Je n'ai pas lu en détail les deux procédures, mais pourquoi faire en deux étapes ? Je confirme que vous pouvez vous passer de boucle, utilisez plutôt PIVOT Quelle est votre version de SQL Server ? |
|
|
00
|
|
|
#6 | |||
|
Membre Expert
![]() |
Citation:
A priori c'est même UNPIVOT que vous devez utiliser qui vous permet de remettre vos 30 colonnes en lignes.... Le code suivant (à affiner en excluant les NULL par exemple) devrait faire votre bonheur: Code :
Il faut avouer que les automaticiens ne vous on pas facilité la tache...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : novembre 2008 Messages : 15 ![]() |
Merci, c'est parfaitement ce dont j'avais besoin.
Je ne connaissais pas PIVOT et UNPIVOT. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com