SQL。执行sp_executesql时如何使用ORDER BY子句?
SQL. How to use ORDER BY clause while executing sp_executesql?
我需要在执行 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'
你有想法吗?我的语法不正确。
您不能将 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 table 变量来反映您的数据结构。
sp_executesql
不允许正在执行的语句是表达式。它必须是常量或变量。不允许串联。
一种解决方法是创建另一个变量来保存连接的字符串。
declare @query2 nvarchar(1000)
set @query2 = @query + N' order by mychoice'
execute sp_executesql @query2, ....
我需要在执行 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'
你有想法吗?我的语法不正确。
您不能将 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 table 变量来反映您的数据结构。
sp_executesql
不允许正在执行的语句是表达式。它必须是常量或变量。不允许串联。
一种解决方法是创建另一个变量来保存连接的字符串。
declare @query2 nvarchar(1000)
set @query2 = @query + N' order by mychoice'
execute sp_executesql @query2, ....