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 >>