【发布时间】:2015-04-30 05:51:34
【问题描述】:
我需要在执行sp_executesql时使用ORDER BY子句。
我尝试了以下方法,但没有成功:
1.
EXEC Sp_executesql @query + 'ORDER BY myChoice', N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2
2.
EXEC Sp_executesql @query ORDER BY myChoice, N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2
3.
EXEC Sp_executesql @query, N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2 + 'ORDER BY myChoice'
你有想法吗?我的语法不正确。
【问题讨论】:
-
为什么不在@query 中包含 ORDER BY?
-
如果您的查询语法正确(我们无法知道,因为您没有提供),请尝试在您的第一次尝试中在
ORDER之前添加一个空格:' ORDER BY...' -
在您的@query 中添加 order by 子句。
-
正如其他人所说,如果语法正确,您应该能够只使用 ORDER BY。例如,以下查询可以正常工作。
declare @param1 int = 1 declare @query nvarchar(max) = N'select * from seUser order by username' exec sp_executesql @query, N'@param1 int', @param1附加@query + 'ORDER BY myChoice并没有得到结果的事实让我认为查询最终看起来像这样SELECT * FROM tableORDER BY myChoice。 -
很有可能你根本不需要使用动态 sql...你能分享一下你的 @Query 的内容吗?
标签: sql sql-server tsql dynamic sql-order-by