2017-02-16 8 views
1

これを実行する方法はありますか?OFFSETとFETCHのパラメータ値NEXT

私は現時点でEXEC sp_executesql

を経由して、動的SQLをそれを実行できるようにしたいのですが - それはそうのような単なる文字列の連結

です:理想的

SET @sql += ' 
ORDER BY em.[Date] ' + IIF (@sortOrder = 'asc', 'ASC', 'DESC') + ' 
OFFSET ' + CONVERT (VARCHAR, @pageNum*@pageSize) + ' ROWS 
FETCH NEXT ' + CONVERT (VARCHAR, @pageSize) + ' ROWS ONLY' 

、私は」 dはそれが好きです:

+2

を、私はあなたが探しているものと思われる例Aおよび/またはB:

これは動作するはずです。 https://msdn.microsoft.com/en-us/library/ms188001.aspx – tarheel

答えて

2

動的TSQLコマンドを実行することができますsp_executesqlを呼び出すときに値を渡すことによって変数を変更できます。 `sp_executesql`ドキュメントの

DECLARE @sql nvarchar(max) 
DECLARE @parameters nvarchar(max) 
DECLARE @tmp_offset int 

--create dynamic sql command with variables 
SET @sql += ' 
ORDER BY em.[Date] ' + IIF (@sortOrder = 'asc', 'ASC', 'DESC') + ' 
OFFSET @offset ROWS 
FETCH NEXT @rows ROWS ONLY' 

--calculate offset 
SET @tmp_offset = @pageNum * @pageSize 

--define the parameters that will be used inside dynamic SQL 
SET @parameters = N'@offset int, @rows int' 

--execute dynamic sql passing variables' values 
EXECUTE sp_executesql @sql, @parameters, @offset = @tmp_offset, @rows = @pageSize 
関連する問題