bonjour,
Envoyé par
StringBuilder
EXECUTE @vResult = Ma_Procedure @mon_parametre = 10
Ça marche, mais c'est illisible.
La ça se discute, car tu pourrais imaginer
execute Ma_Procedure @nbre_choux=10, @nbre_carottes=15
et ton appel préféré
execute Ma_Procedure 10, 15
Avec ton appel préféré on ne sait pas en lisant le code si le premier paramètres concerne les choux ou les carottes ou les navets. Je te l'accorde c'est le cas dans la plupart des langages.
Envoyé par
StringBuilder
EXECUTE @vResult = @Ma_Procedure @mon_parametre = 10
C'est encore moins lisible, et laisse la porte ouverte aux injections SQL, surtout si la valeur de @Ma_Procedure est reçue en paramètre (ce qui est d'ailleurs le seul et unique cas où cette syntaxe a le moindre intérêt).
Là, je suis d'accord, c'est exactement le genre d'argument que je cherchais, et auquel je n'avais pas pensé.
Envoyé par
StringBuilder
Rappel du premier cours de première année de programmation de n'importe quel cursus de programmation :
- une PROCEDURE FAIT quelque chose
- une FONCTION VAUT quelque chose
Une PROCEDURE ne doit donc rien retourner, elle ne doit pas contenir de clause RETURN.
Donc sémantiquement, exec @res = MaProc c'est pas correct.
Dans beaucoup de projets et pas uniquement dans mon équipe, lavaleur de retour d'une procédure stockée vaut 0 quand tout va bien et un code erreur sinon.
Certes ce n'est plus nécessaire depuis l'ajout du try catch en SQL server 2005, mais les habitudes ont la vie dure.
Pour tout te dire, je n'ai pas l'habitude des valeurs de retour, mais elles sont utilisées dans le projet sur lequel je travaille.
PS: si vous avez d'autres inconvénients à ajouter sur le fait de passer le nom de la procédure stockée en paramètre.
Merci pour vos réponses
Soazig
Partager