set @sql = N'select @id = in_lname from ' + @table + ' where in_id = 7' >N'@id nvarchar(50) output' defines parameters passed into sp_executesql. @id output is actual parameter passed. They don't have to have the same name. See BOL for details.
>>declare @id nvarchar(50), @sql nvarchar(500), @table varchar (50) >>set @table = 'intake' >>set @sql = N'select in_lname from ' + @table + ' where in_id = 7' >> >>exec sp_executesql @sql, N'@id nvarchar(50) output', @id output >> >>if @id is null >> print 'null' >>else >> print @id >>>>