我需要在执行ORDER BY
时使用sp_executesql
子句。
我试过了,但没有成功:
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'
你有想法吗?我的语法不正确。
答案 0 :(得分:5)
sp_executesql
不允许正在执行的语句是表达式。它必须是常量或变量。不允许连接。
一种解决方法是创建另一个变量来保存连接字符串。
declare @query2 nvarchar(1000)
set @query2 = @query + N' order by mychoice'
execute sp_executesql @query2, ....
答案 1 :(得分:2)
您无法将ORDER BY应用于SP,但您可以捕获输出并将ORDER BY应用于该输出。这种事情;
declare @results as table (col1 int, col2 int)
insert into @results execute sp_executesql @query, N'@param1 tinyint, @param2 nvarchar(60)', @param1, @param2
select * from @results order by myChoice
您显然必须定义@results表变量以反映您的数据结构。