Looking through all of the suggested similar questions, I can find none that addresses my need.
I want to pass in multiple keywords, statuses, funding sources and project IDs. Using the multiple parameters works for a limited number of scenarios but that doesn't seem like a workable solution when there are more options to select from as in a multi-select dropdown box. I read about using "table value parameters," but the implementation isn't clear and I cannot find an example of how to use them in the WHERE statements.
In the code below, I want to be able to pass in multiple "projectStatusID" values so that the where clause would be:
WHERE projectStatusID in (1,3,5,9)
Any help is appreciated.
CREATE PROCEDURE [dbo].[searchProjects_TEST]
@keyword1 nvarchar(50) = NULL,
@keyword2 nvarchar(50) = NULL,
@keyword3 nvarchar(50) = NULL,
@keyword4 nvarchar(50) = NULL,
@projectStatus int = NULL,
@fundingSourceID int = NULL,
@projectID int = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT project.projectID
, projectTitle
, topicTrackingNumber
FROM project LEFT OUTER JOIN refProjectStatus on refProjectStatus.projectStatusID = project.projectStatusID
LEFT OUTER JOIN fundingIncrement on fundingIncrement.projectID = project.projectID
WHERE (1=1)
AND (approvedByID IS NOT NULL)
AND ((@keyword1 IS NULL OR project.projectTitle LIKE @keyword1)
OR (@keyword1 IS NULL OR project.description LIKE @keyword1)
OR (@keyword1 IS NULL OR project.objective LIKE @keyword1))
AND ((@keyword2 IS NULL OR project.projectTitle LIKE @keyword2)
OR (@keyword2 IS NULL OR project.description LIKE @keyword2)
OR (@keyword2 IS NULL OR project.objective LIKE @keyword2))
AND ((@keyword3 IS NULL OR project.projectTitle LIKE @keyword3)
OR (@keyword3 IS NULL OR project.description LIKE @keyword3)
OR (@keyword3 IS NULL OR project.objective LIKE @keyword3))
AND ((@keyword4 IS NULL OR project.projectTitle LIKE @keyword4)
OR (@keyword4 IS NULL OR project.description LIKE @keyword4)
OR (@keyword4 IS NULL OR project.objective LIKE @keyword4))
AND (@projectStatus IS NULL OR project.projectStatusID = @projectStatus)
AND (@fundingSourceID IS NULL OR project.fundingSourceID = @fundingSourceID)
ORDER BY projectTitle, topicTrackingNumber
END
GO