我有一個要執行的動態查詢。對於這個查詢,我從用戶接收一些參數(例如用於分頁的參數)。所以我使用sp_executesql
來執行查詢。當我在查詢中指定order by
時,出現錯誤消息除非還指定了TOP或FOR XML,否則ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效。。我怎麼能到這兒來的問題帶有Order By子句的動態查詢在SQL Server 2008中出現錯誤
SET @sql = 'SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY CaseID)AS RowNumber ,*
FROM [dbo].[CV_CaseMaster] WHERE SpaceID = @SID
order by @OrderBy ) AS CV_CaseMasterDetails WHERE RowNumber BETWEEN @MinRow AND @MaxRow'
`
EXEC sp_executesql @sql
,N'@SID UNIQUEIDENTIFIER,@MinRow int, @MaxRow int,@OrderBy VARCHAR(50)'
,@[email protected],@MinRow = @CurrentMinRow,@MaxRow = @CurrentMaxRow, @OrderBy = @SortBy`
OR
我可以指定一個Order By
柱sp_executesql
?
Mikael Eriksson這也行不通 – Rauf
這應該工作。你現在得到什麼錯誤。你需要在查詢之上聲明AND設置SortBy,並從executableql命令中刪除OrderBy – Kamal
@Rauf - 你得到了什麼錯誤? '@ SortBy'有什麼價值? –