176 votes

paramètres optionnels dans proc stocké dans SQL Server ?

J'écris quelques procs stockés dans SQL Server 2008, et je me demande si le concept de paramètres d'entrée optionnels est possible ici ?

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

271voto

Raj More Points 22358

Vous pouvez déclarer comme ceci

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

73voto

Mike Cole Points 4063

Oui, c'est le cas. Déclarez le paramètre comme suit :

@Sort varchar(50) = NULL

Maintenant, vous n'avez même pas besoin de passer le paramètre dans. La valeur par défaut sera NULL (ou celle que vous choisirez par défaut).

8voto

billpennock Points 149

2014 et au-dessus au moins, vous pouvez définir une valeur par défaut et cela prendra cela et NON une erreur lorsque vous ne passez pas ce paramètre. Exemple partiel : le 3ème paramètre est ajouté en option. Exécutez la procédure réelle avec seulement les deux premiers paramètres travaillés finement

exec getlist 47,1,0

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X