可以使用T-SQL对存储过程的结果进行排序吗?

时间:2011-07-18 19:08:34

标签: sql-server sql-server-2005 stored-procedures

我在具有许多存储过程的MSSQL 2005数据库系统上运行。其中一个存储过程是“报告”,我想在不编辑存储过程的情况下对其进行排序。有没有办法动态地对存储过程的结果进行排序:如下所示:

exec spReport 
order by ColumnT

3 个答案:

答案 0 :(得分:2)

您可以插入临时表。然后,从表中排序。

e.g。

INSERT INTO #table
EXEC spReport

SELECT *
FROM  #table
ORDER BY ColumnT

答案 1 :(得分:1)

不,你不能这样做。如果您知道结果集的结构,则可以先构建一个#tmp表,插入#tmp exec spReport,然后从#tmp表中选择order by子句。您甚至可以使用OPENQUERY或OPENROWSET一起破解某些东西,但我建议您编辑spReport以始终使用您想要的顺序或者获取参数并根据参数定义顺序。

答案 2 :(得分:1)

您应该使用结果填充临时表,然后对其进行排序。以下是显示如何执行第一部分的链接:

How to SELECT * INTO temp table FROM Stored Procedure