|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Bonjour à tous,
Je vous demande un peu d'aide car j'essaye de créer une procédure stockée qui, je pense, doit être simple mais là je bloque depuis hier. Je débute aussi en procédure stockée. À partir d'une table, je dois retourner certains champs de la table, plus un calcul avec deux colonnes de la table. Je ne peux malheureusement pas faire juste un "SELECT". J'ai pensé utiliser un curseur pour parcourir mon jeu de résultats (SELECT) et faire mes calculs mais à la fin de la procédure je n'obtiens qu'une ligne de résultats. Voici un exemple de mon programme : Code :
Merci. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Je ne sais pas exactement ce que vous essayez de faire, mais visiblement, ca reste quelques calculs, et je ne vois pas ce qui vous empêche de faire cela en une requete SELECT, ca serait beaucoup plus simple et performant je pense... d'autre part, avez vous mis tout votre procédure stockée, je ne vois pas ou elle renvoi les (le apparemment) résultat a première vue, et en essayant de deviner votre besoin, je pense que cette requete devrait s'approcher de ce que vous voulez obtenir : Code sql :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Bonjour,
Merci pour votre réponse. En effet, c'est juste du calcul mais je dois par la suite retourner la variable "duration" en chaine de caractère sous le format 'xx : xx : xx : xx'. Je pense que je ne peux pas le faire avec le "Select". Mes variables NbframeIn et NbframeOut me permettent juste de transformer Tcin et TcOut en entier pour faire le calcul de la durée. Je pensais qu'avec le curseur je pouvais modifier le jeu de resultats et le réafficher. Qu'est qu'il me manque à la fin de mon code? J'avais mis les variables en output @id , @creation, @Tcin, @TcOut, @Duration mais avec le OutPut, çà me renvoie qu'un seul résultat. Merci |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Je m'etais trompé d'ailleur dans le calcul de Duration, je calculais l'inverse
revoici donc la bonne requete : Code sql :
pour ce qui est du formatage de Duration, vous pouvez créer une UDF qui le fait, mais le mieux si vous le pouvez, et encore de traiter ca dans le programme qui l'affiche, c'est plus son role que celui d'un SGBDR |
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Si vous aviez mis les variables en OUTPUT, je comprend maintenant comment vous récupériez les résultats, je comprend aussi pourquoi vous n'aviez que les derniers : vous faite une boucle ou vous écrasez à chaque fois vos valeurs, et vous ne les récupérez qu'a la fin de la boucle, donc uniquement les dernières valeurs calculées !
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Je suis obligé de faire le formatage dans la procédure stockée car ce n'est pas moi qui vais traiter le resultat de la procédure stockée et l'afficher.
Je vais aussi avoir des conditions sur le calcul de la durée. La solution serait donc une UDF. Je laisse tomber le curseur. Merci pour votre aide, je vais essayer de reprogrammer tout çà. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
re,
je ne sais pas quelles sont les valeurs qui vous intéressent vraiment au final, mais si vous ne voulez que la durée, vous pouvez même faire une udf qui prend TcIn et TcOut comme paramètres, et qui vous retourne la durée formatée comme vous le voulez; Votre requete sera plus lisible et votre fonction sera a priori déterministe, donc si vous avez plusieurs fois le même couple tcIn et TcOut, elle ne sera exécutée qu'une seule fois par couple. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Merci beaucoup pour votre aide, j'ai réussi à avoir mon resultat.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com