The following sp accepts 3 parameters of type XML. It demonstrates creating tables in memory using ParamValues property and the nodes property of the XML data type. I leveraged the XML input parameters to provide a genericized and highly flexible manner to input tabular data.
   
An example of calling it is:

[BRIEF_SUMMARYSearch] 'c1', '<Regions><id>United States</id><id>Canada</id><id>Latin America</id></Regions>', '<segments><id>PR</id><id>CAC</id><id>DHS</id></segments>', '<status><id>Brief Denied</id><id>Draft</id><id>Edited</id></status>'

 
CREATE PROCEDURE [dbo].[BRIEF_SUMMARYSearch] 
(@regionIds AS xml, @segmentIds AS xml, @statusIds AS xml)
AS 
	BEGIN TRY

		-- prepare region table
		DECLARE @Regions TABLE (ID int)
		INSERT INTO @Regions (ID) SELECT ParamValues.ID.value('.','VARCHAR(20)')
		FROM @regionIds.nodes('/Regions/id') as ParamValues(ID) 
		-- prepare segment table
		DECLARE @segments TABLE (ID int)
		INSERT INTO @segments (ID) SELECT ParamValues.ID.value('.','VARCHAR(20)')
		FROM @segmentIds.nodes('/segments/id') as ParamValues(ID) 
		-- prepare status table
		DECLARE @status TABLE (ID int)
		INSERT INTO @status (ID) SELECT ParamValues.ID.value('.','VARCHAR(20)')
		FROM @statusIds.nodes('/status/id') as ParamValues(ID) 
		-- perform joins, ANDing the results
		SELECT 

		--brsum_id 
		brsum_title as 'Brief Title'
		,brsum_type as 'Brief Type'
		,(select bc_campaign_name from BRIEF_CAMPAIGNS where bc_id = brsum_id) as 'Campaign'
		,(select b_st_status_name from BRIEF_STATUS where b_st_id = brsum_status) as 'Status'
		,(select DATEDIFF(day, brsum_date_added, getdate())) AS 'Pending'
		,(select bupr_user_lastname from BRIEF_USER_PROFILES where bupr_user_id = brsum_creator) AS 'Creator'
		,brsum_target_launch_date as 'Launch'	
		,(select br_region_name from BRIEF_REGIONS where br_id = brsum_region) as 'Region'
		,(select bs_segment_name from BRIEF_SEGMENTS where bs_id = brsum_segment) as 'Segment'	

		FROM BRIEF_SUMMARY WHERE brsum_id IN
		(
			SELECT 
					brsum_id
			FROM 
				BRIEF_SUMMARY
			INNER JOIN 
				@Regions p
			ON    BRIEF_SUMMARY.brsum_region = p.ID
		)
		AND brsum_id IN
		(
			SELECT 
					brsum_id
			FROM 
				BRIEF_SUMMARY
			INNER JOIN 
				@segments p
			ON    BRIEF_SUMMARY.brsum_segment = p.ID
		)
		AND brsum_id IN
		(
			SELECT 
					brsum_id
			FROM 
				BRIEF_SUMMARY
			INNER JOIN 
				@status p
			ON    BRIEF_SUMMARY.brsum_status = p.ID
		)
		-- SENTIENCE 
		END TRY

		BEGIN CATCH
		SELECT ERROR_NUMBER() as ERROR_NUMBER,
		   ERROR_SEVERITY() as ERROR_SEVERITY,
		   ERROR_STATE() as ERROR_STATE,
		   ERROR_MESSAGE() as ERROR_MESSAGE
		END CATCH