I would do it bit differently.
First, create a function to split the input variable:
CREATE FUNCTION split(
@delimited NVARCHAR(MAX),
@delimiter NVARCHAR(100)
)
RETURNS @t TABLE (id INT IDENTITY(1,1), val NVARCHAR(MAX))
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(@delimited,@delimiter,'</t><t>') + '</t>'
INSERT INTO @t(val)
SELECT r.value('.','varchar(MAX)') as item
FROM @xml.nodes('/t') as records(r)
RETURN
END
Next, the query would become something like this:
SELECT * INTO #SplitResults FROM dbo.split(@role, ',')
SELECT
*
FROM
Employee INNER JOIN #SplitResults ON
Employee.employeeRole = #SplitResults.Val
DROP TABLE #SplitResults
And you can pass the @role as:
@role = 'Tech,Manager'