Ce matin, j’ étais en discussion avec un prospect, et il me pose la question suivante : savez-vous comment définir un paramètre optionnel pour une SP ?
Ma réponse à froid : tous les paramètres sont obligatoires en .Net mais je place un IF dans la procédure stockée afin que si la valeur soit égale à 0 on n’ effectue une requête sans le paramètre.
En fait, il est parfaitement possible d’ avoir un paramètre optionnel, c’ est à dire que l’ on ne déclare pas dans le code ASP.NET. Il suffit d’ affecter une valeur par défaut au paramètre de la procédure par exemple
CREATE PROCEDURE ListeSalarie
@Age int = 18
AS
SELECT Nom,Matricule FROM Salarie WHERE Age>@Age;
Par cette procédure, vous pouvez appeler la procédure ListeSalarie sans paramètre pour avoir la liste des salarie supérieur à l’ age légal de la majorité.
Par cette procédure, vous pouvez appeler la procédure ListeSalarie avec un paramétre @age pour avoir la liste des salarie supérieur à cette @age donné.
C’est bien cette « technique » mais elle force une contrainte par défaut.
Si on souhaite par exemple récupérer la liste complète par défaut, il est possible d’utiliser la contrainte suivante:
WHERE (@age IS NULL OR Age = @age)
Cela permet :
– Soit de passer null à l’appel de SP dans le code (.Net)
– Soit de passer null comme paramètre par défaut (@age = null)
J’espère être relativement en rapport avec le sujet et surtout que cela pourra servir.