Probabil ai un "typo" - vezi de exemplu daca numele parametrului procedurii este altul decat numele parametrului din WHERE.
Mie mi-a "mers" asa:
CREATE PROCEDURE SelectProduct
@ProductID int
AS
BEGIN
WITH prods AS (SELECT * FROM dbo.Product WHERE ProductID = @ProductID)
SELECT * FROM prods
END