Simplification des procédures stockées

Writing by jfmathieu on Saturday, 31 of March , 2007 at 10:26 pm

Si vous avez déjà fait des “stores procedure“, vous avez sûrement rencontré, à un moment ou à un autre, une procédure comme celle-ci:

IF(NOT @yard_id IS NULL)
BEGIN
SELECT * FROM Yards WHERE yard_id = @yard_id AND year = @year;
END
ELSE
BEGIN
SELECT * FROM Yards WHERE year = @year;
END

Cette situation arrive, entre autres, lorsque nous avons un paramètre “optionnel” et que nous voulons qu’il n’influence pas le résultat lorsqu’il est absent.

Une autre version de cette même requête serait alors

SELECT * FROM Yards
WHERE yard_id = COALESCE(@yard_id, dbo.YardReport.yard_id)
AND year = @year;

COALESCE, qui semble être la traduction de FUSIONNER, fait en sorte de retourner le premier paramètre non nul de ses arguments. Dans notre situation, si @yard_id est nul, COALESCE vas retourner la valeur de la ligne en cours, ce qui est toujours vrai.

Parmis les avantages de cette utilisation, les plus intéressantes sont la maintenance du code et la lisibilité. Effectivement, dans des requêtes plus complexes, la deuxième représentation sera beaucoup plus facile à maintenir.

Bonne pratique

Leave a comment

Category: Astuce, Developpement, SQL

No Comments

No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
Pour démontrer que vous êtes un humain et non un robot tapez le mot qui est écrit sur l'image.
Anti-Spam Image

Hosting powered by 1&1 Hosting and by WordPress

WEB, TI & Programmation

Réflexions, outils et astuces par Jean-Francois Mathieu


Développeur internet depuis plusieurs années, je conçois, évalue et développe des solutions d'affaire électronique pour les entreprises. Les principales technologies utilisées sont Microsoft .NET (ASP, WebService, Window Service) avec MS SQL Server ou PHP avec MySQL. Pour le côté client, j'utilise le Javascript et le XML (AJAX) pour des solutions plus intéressantes pour l'utilisateur.