こんにちは、私は動的節を持つストアドプロシージャを持っています、これは私のストアドプロシージャのようなものです。ストアドプロシージャの動的where句の記述
SELECT Comment.AddDate,Event.StartTime,Users.Name
FROM Comment
JOIN Users on Users.USERS_ID = Comment.UserID
JOIN Event ON Users.USERS_ID = Event.UserID
変数@Nameを渡すと、ストアドプロシージャは次のようになります。
SELECT Comment.AddDate,Event.StartTime,Users.Name
FROM Comment
JOIN Users on Users.USERS_ID = Comment.UserID
JOIN Event ON Users.USERS_ID = Event.UserID
WHERE Name = @Name
は、しかし、私は渡す@Nameは、私はすべてが返され、特定の名前に基づいていないしたい意味、空になりますせる場合があります。
また、イベントIDを渡す場合もありますが、これについてはどうすればいいですか?
WHERE Name = COALESCE(NULLIF(@Name, ''), Name) AND EventID = COALESCE(@EventID, EventID)
UPDATE:私は追加
は
これを試みなければなりませんそれは仕事をしなかった、問題は時々@Nameはすべてが返される必要があることを意味するnullになります。 – pmillio
それは意味をなさない。 COALESCEは、@NameがNULLの場合は、現在のName値を使用して、Name = Nameになります。これは常に真であるべきです。 – sellmeadog
他のユーザの示唆しているように 'IS NULL OR'オプションを試すことができます。私はちょうどCOALESCEを好む – sellmeadog