Must declare the scalar variable "@VarName"
Take out the go after the variable declaration.  It is causing SQL server to end the batch which makes your variable declaration go out of scope.

alter proc Proc1
@ProductID int
 as
 select ProductName
 from Products
 where ProductID = @ProductID


Here is some details from Microsoft on what the go keyword/statement does.