Well, no - it won't...
Look at what you wrote:
SET @execquery =N'
declare @i varchar(50)
set @i=''139''
select * from ASYNCSEARCH_'+@i
It's a single string, containing the declaration of the variable, then trying to tack the variable on the end of the string it's declared in...
Did you mean:
declare @i varchar(50)
set @i='139'
SET @execquery =N'select * from ASYNCSEARCH_' + @i