【发布时间】:2011-07-18 19:08:34
【问题描述】:
我在一个具有许多存储过程的 MSSQL 2005 数据库系统上运行。其中一个存储过程是“报告”,我想在不编辑存储过程的情况下对其进行排序。有没有办法对存储过程的结果进行动态排序:像这样:
exec spReport
order by ColumnT
【问题讨论】:
标签: sql-server sql-server-2005 stored-procedures
我在一个具有许多存储过程的 MSSQL 2005 数据库系统上运行。其中一个存储过程是“报告”,我想在不编辑存储过程的情况下对其进行排序。有没有办法对存储过程的结果进行动态排序:像这样:
exec spReport
order by ColumnT
【问题讨论】:
标签: sql-server sql-server-2005 stored-procedures
您可以插入到临时表中。然后,从表中排序。
例如
INSERT INTO #table
EXEC spReport
SELECT *
FROM #table
ORDER BY ColumnT
【讨论】:
不,你不能这样做。如果您知道结果集的结构,您可以先构建一个#tmp 表,插入#tmp exec spReport,然后从带有order by 子句的#tmp 表中选择。您甚至可以使用 OPENQUERY 或 OPENROWSET 一起破解某些东西,但我建议您编辑 spReport 以始终使用您想要的顺序,或者采用参数并根据参数定义顺序。
【讨论】:
您应该用结果填充一个临时表,然后对其进行排序。这是显示如何执行第一部分的链接:
【讨论】: