title: Msg 203, Level 16, State 2, is not a valid identifier
body: <p>I'm getting the following error:</p>
  
  <blockquote>
    <p><em>Msg 203, Level 16, State 2, Procedure getQuestion, Line 18</em><br>
    The name 'select top(1) * from tlb_Question inner join tlb_options on tlb_options.qID=tlb_Question.id and tlb_Question.qNumber=1 and tlb_Question.id not in (0,1)' is not a valid identifier</p>
  </blockquote>
  
  <p>from the following stored procedure:</p>
  
  <pre><code>ALTER proc getQuestion
      @qNo bigint,
      @total bigint,
      @next nvarchar(max)
  as
  begin 
      declare @hisa bigint
      set @hisa=@total/3
  
      if(@qNo&lt;=@total/3)
      begin
      declare @query nvarchar(max)
      set @query=('select top(1) * from tlb_Question 
          inner join tlb_options on tlb_options.qID=tlb_Question.id and tlb_Question.qNumber=1 and tlb_Question.id not in ('+cast(@next as varchar)+')')
      print @query
      execute @query
      end
  end
  </code></pre>