63 votes

Vérifier si un paramètre est nul ou vide dans une procédure stockée

Je sais comment vérifier si un paramètre est nul mais je ne sais pas comment vérifier s'il est vide ... J'ai ces paramètres et je veux vérifier que les paramètres précédents sont vides ou nuls, puis les définir comme ci-dessous

 ALTER PROCEDURE [dbo].[GetSummary]
    @PreviousStartDate NVARCHAR(50) ,
    @PreviousEndDate NVARCHAR(50) ,
    @CurrentStartDate NVARCHAR(50) ,
    @CurrentEndDate NVARCHAR(50)
AS
  BEGIN
    IF(@PreviousStartDate IS NULL OR EMPTY)
        SET @PreviousStartdate = '01/01/2010'  for example..

Je vous serais reconnaissant de l'aide.

86voto

Rex Miller Points 1354

J'utilise parfois NULLIF comme ça...

 IF NULLIF(@PreviousStartDate, '') IS NULL

Il n'y a probablement aucune raison que ce soit mieux que la méthode suggérée par @Oded et @bluefeet, juste une préférence stylistique.

La méthode de @danihp est vraiment cool mais mon vieux cerveau fatigué n'irait pas à COALESCE quand je pense qu'il est nul ou vide :-)

48voto

Oded Points 271275

Voici le schéma général :

 IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')

'' est une chaîne vide dans SQL Server.

11voto

danihp Points 15682

J'utilise coalesce :

 IF ( COALESCE( @PreviousStartDate, '' ) = '' ) ...

6voto

bluefeet Points 105508

vous pouvez utiliser:

 IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')

4voto

Pavel Hodek Points 2488

Et si on combinait coalesce et nullif ?

 SET @PreviousStartDate = coalesce(nullif(@PreviousStartDate, ''), '01/01/2010')

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