web-dev-qa-db-fra.com

paramètres facultatifs dans SQL Server stocké proc?

J'écris des procédures stockées dans SQL Server 2008 et je me suis demandé si le concept de paramètres d'entrée facultatifs est possible ici. 

Je suppose que je pourrais toujours passer à NULL pour les paramètres que je ne veux pas utiliser, vérifier la valeur dans le proc stocké, puis prendre les choses à partir de là, mais je m'intéressais si le concept est disponible ici. Merci! 

93
larryq

Vous pouvez déclarer comme ça

CREATE PROCEDURE MyProcName
    @Parameter1 INT = 1,
    @Parameter2 VARCHAR (100) = 'StringValue',
    @Parameter3 VARCHAR (100) = NULL
AS

/* check for the NULL / default value (indicating nothing was passed */
if (@Parameter3 IS NULL)
BEGIN
    /* whatever code you desire for a missing parameter*/
    INSERT INTO ........
END

/* and use it in the query as so*/
SELECT *
FROM Table
WHERE Column = @Parameter
166
Raj More

Oui, ça l'est. Déclarez le paramètre comme suit:

@Sort varchar(50) = NULL

Maintenant, vous n'avez même pas besoin de passer le paramètre. Il sera par défaut à NULL (ou à ce que vous choisissiez d'utiliser par défaut).

47
Mike Cole

En 2014 et au moins, vous pouvez au moins définir une valeur par défaut. Une erreur sera nécessaire si vous ne transmettez pas ce paramètre. Exemple partiel: le 3ème paramètre est ajouté de manière optionnelle. exec de la procédure actuelle avec seulement les deux premiers paramètres a bien fonctionné

exec getlist 47,1,0

create procedure getlist
   @convId int,
   @SortOrder int,
   @contestantsOnly bit = 0
as
0
billpennock