You build a string and put its result in the @s_query variable.
So you have to convert the int variable as @ PageIndex1 and @ PageSize1, thus:
SET @s_query = 'SELECT ' + @ColNames1 + ' FROM ##Results WHERE ##RowNum BETWEEN('+CONVERT(varchar(20), @PageIndex1)+'-1) * '+CONVERT(varchar(20),@PageSize1)+' + 1 AND((('+CONVERT(varchar(20),@PageIndex1)+' -1) * '+CONVERT(varchar(20),@PageSize1)+' + 1) + '+CONVERT(varchar(20),@PageSize1)+') - 1';
If you want to maintain code readability, you can define two variables:
DECLARE @pistr varchar(20) DECLARE @psstr varchar(20) SET @pistr = CONVERT(varchar(20), @PageIndex1) SET @psstr = CONVERT(varchar(20), @PageSize1)
So your query will look like this:
SET @s_query = 'SELECT ' + @ColNames1 + ' FROM ##Results WHERE ##RowNum BETWEEN('+ @pistr +'-1) * ' +@psstr +' + 1 AND(((' +@pistr +' -1) * ' +@psstr +' + 1) + ' +@psstr +') - 1';
Joe taras
source share