Comment définir des paramètres optionnels pour une procédure stockée ?

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é.

Une réflexion au sujet de « Comment définir des paramètres optionnels pour une procédure stockée ? »

  1. Avatar de Otterc8Otterc8

    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.
    ;)

Laisser un commentaire