SQL Server 2014 - Strange SP behavior during compilation
The phenomenon you are experiencing is called Deferred Name Resolution.


  When a stored procedure is created, the statements in the procedure
  are parsed for syntactical accuracy. If a syntactical error is
  encountered in the procedure definition, an error is returned and the
  stored procedure is not created. If the statements are syntactically
  correct, the text of the stored procedure is stored in the
  sys.sql_modules catalog view.
  
  When a stored procedure is executed for the first time, the query
  processor reads the text of the stored procedure from the
  sys.sql_modules catalog view and checks that the names of the objects
  used by the procedure are present. This process is called deferred
  name resolution because table objects referenced by the stored
  procedure need not exist when the stored procedure is created, but
  only when it is executed.
  
  > Deferred name resolution can only be used when you reference
  nonexistent table objects. All other objects must exist at the time
  the stored procedure is created. For example, when you reference an
  existing table in a stored procedure you cannot list nonexistent
  columns for that table.


The only way I know around this problem would be to use dynamic SQL.