You cannot use multiple inputs as parameter for IN statement. You will have to split those comma separated values in SQL to create a table variable and join with that table variable.
You can create a function for splitting input string :-
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[udf_PutStringtoTableUnique]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[udf_PutStringtoTableUnique]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE function [dbo].[udf_PutStringtoTableUnique]  
(         
      @inputStr as varchar(max),  
      @delim nchar(1) = N','    
)    
returns @tbl table(ID int primary key)    
as    
BEGIN    
if @inputStr = '' or @inputStr is null
return 
declare @tags nchar(2)
set @tags = @delim + @delim;
with tbl_for_csv as    
(    
select left(@inputStr + @tags,charindex(@delim,@inputStr + @tags) -1)as Col,     
right(@inputStr + @tags,len(@inputStr + @tags) - charindex(@delim,@inputStr + @tags)) as Str    
union all    
select left(Str,charindex(@delim,Str) - 1)as Col,     
right(Str,len(Str) - charindex(@delim,Str)) from tbl_for_csv    
where len(right(Str,len(Str) - charindex(@delim,Str))) > 0    
)    
insert into @tbl    
select distinct Col from tbl_for_csv    
option (maxrecursion 0)    
return 
END
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
And Then write something like this in procedure :-
DECLARE @TempStates Table (StateName Varchar(2))
INSERT INTO @TempStates
Select id from [dbo].[udf_PutStringtoTableUnique](@state, ',')
    SELECT * FROM StateTable 
    INNER JOIN @TempStates temp ON state = temp.StateName