|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2011 Messages : 35 ![]() |
Bonjour a tous,
Je viens de passer sur une base de donnée SQL Server et j'avoue avoir un peu de mal meme si jcommence a mi habituer. Je souhaiterai savoir appeller une procedure stockée dans une autre procedure stockée. Ma proc1 est censer me retour les informations sur un article par exemple un meuble ( Ce qui marche tres bien) mais comme ce meuble existe en plusieurs couleurs ( rouge, bleu, noir, marron ) je voudrais avoir une proc2 qui va recupere toute les couleurs disponible pour une article Comme sa je voudrais que lorsque j'appelle ma proc1, elle appelle ma proc2 pour avoir : numero article A000 description : blabla hauteur: 150cm couleur ; rouge, bleu, noir, marron ..... Je pense que c'est possible mais je ne sais pas vraiment comment j'ai bien essayé en ajoutant un exec proc2 @numart mais le resultat obtenue n'est pas celui voulu En esperant une reponse bonne journée |
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : janvier 2008 Messages : 11 ![]() |
Salut,
Pour appeler une procédure stocké en SQL, tu peux utiliser "exec [nom_procedure]". Comme ceci : code... .. .. exec tutu Si tu as des paramètres à fournir à ta procédure stocké, tu peux les passer comme ceci : exec tutu [arg_1],[arg_2]... etc ----------------------------- Si ça sa ne fonctionne pas, il nous faut tes deux procédures pour comprendre. Merci. Cdt, Osiris6880 |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() |
Poste ton code et nous allons l'amander.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : janvier 2008 Messages : 11 ![]() |
Précision.
Si tu as une procédure qui te sort plusieurs articles et que tu veux les couleurs de chacun des articles. Soit tu utilise les jointures ou les curseurs. As tu des clés primaires, clés étrangères ? |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() |
Pourquoi utiliser deux procédures stockées?
Si vous créez des procédures pour retourner un jeu de résultat et que vous commencez à devoir imbriquer ceux-ci(comme c'est le cas ici) faites simplement des fonction table. Vous ne devez pas raisonner côté base de données comme dans votre code CSHARP, ne codez pas une procédure stockée GETIMAGEOFARTICLE() vous perdez tout l’intérêt de la base de donnée c'est à dire sa nature à traiter les données de manière ensembliste et non de manière incrémentale.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#7 | |
|
Invité régulier
![]() Inscription : janvier 2008 Messages : 11 ![]() |
Citation:
Car lorsque l'on veut faire des opérations sur chaque ligne retourner par le select, c'est pratique. |
|
|
|
00
|
|
|
#8 |
![]() ![]() ![]() |
Oui, c'est pratique mais fortement déconseillé. Un SGBDR est optimisé pour faire des traitements ensemblistes pas pour des traitements ligne par ligne.Evitez donc tout parcours itératif.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
10
|
|
|
#9 | ||
|
Membre Expert
![]() |
Citation:
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
||
|
|
00
|
|
|
#10 | |
|
Invité régulier
![]() Inscription : janvier 2008 Messages : 11 ![]() |
Entièrement d'accord, à éviter au maximum.
Désolé, j'aurais du le préciser lorsque je l'ai proposé. Citation:
Mais quelque fois les performances l'emportent sur la propreté du code. J'ai l'habitude de travailler sur des tables contenant des milliards de ligne et des fois le plus propre n'est pas le plus performant (c'est très rare - effectivement) En tous cas j'entend bien que les curseurs sont à utiliser en cas extrême, je partage votre avis à tous les deux. Merci pour cette discussion. J'éviterais de les utiliser au maximum à partir de maintenant. Cdt, Osiris6880 |
|
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#12 |
![]() ![]() ![]() |
Tout à fait vrai Iberserk.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : janvier 2008 Messages : 11 ![]() |
Je m'incline, vous avez raison et j'ai tort.
|
|
|
00
|
|
|
#14 | ||||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 35 ![]() |
Bonjour
et tous d'abord Merci a tous pour vos reponce Pour imbriquer mes deux procedures stockée si dans ma procedure stockée : Proc1 Code :
requete = "EXEC DetailArticle " + numarticle; .... Code :
|
||||
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#16 |
![]() ![]() ![]() |
Effectivement, puisse que les index commencent par 0.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#17 |
![]() ![]() ![]() |
As-tu essayé le mode pas-a-pas ?
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#18 | |
|
Membre Expert
![]() |
A priori pas de indexOutOfRangeException sur GetString().
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#19 | ||||||
|
Invité de passage
![]() Inscription : mars 2011 Messages : 35 ![]() |
Bonjour et merci a tous pour vos reponse
Si mon code c# avais une erreur je pense que c'est parce que je l'avais refais de tete ( stagiaire javais pas enregistrer une copie de mon code). Mon code proc1: Code :
Code :
Code :
|
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com