je vais avoir des problèmes avec la sproc suivanteSQL Server Si la déclaration
Create PROCEDURE GetMatchingUsers
@id int = NULL,
@lastName varchar(50) = NULL,
@firstName varchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON
DECLARE @q nvarchar(4000),
@paramlist nvarchar(4000)
SELECT @q = 'SELECT Id
, LastName
, FirstName '
SELECT @q = @q + 'FROM Users WHERE 1 = 1'
IF ISNULL(@id, '') <> ''
SELECT @q = @q + ' AND Id = ' + Cast(@id as varchar)
IF ISNULL(@lastName, '') <> ''
SELECT @q = @q + ' AND LastName like ''' + @lastName + '%'''
IF ISNULL(@firstName, '') <> ''
SELECT @q = @q + ' AND FirstName like ''' + @firstName + '%'''
SELECT @q = @q + ' ORDER BY LastName, FirstName '
--PRINT @q
SELECT @paramlist = '
@id int = NULL,
@lastName varchar(50) = NULL,
@firstName varchar(50) = NULL'
EXEC sp_executesql @q, @paramlist,
@id,
@lastName,
@firstName
J'étais étonnant que ce qui suit si la déclaration n'est pas considéré comme vrai si je passe 0 comme id
IF ISNULL(@id, '') <> ''
SELECT @q = @q + ' AND Id = ' + Cast(@id as varchar)
Merci pour toute aide
Je veux réellement qu'il concatène la chaîne si l'id passé est 0. La seule fois où je ne veux pas qu'il entre dans le bloc est si l'ID n'est pas du tout passé. – AlteredConcept
puis changez le 0 ci-dessus à -1 (c'est-à-dire: ISNULL (@ Id, -1) <> -1 –