0

我正在使用 ColdFusion 和 SQL 设计报告。报告有 3 个部分。现在所有 3 个部分都使用相同的数据集,但对其进行不同的处理以显示不同的结果。我为此使用了 CTE。我已经为 3 个部分写了 3 个查询。

WITH allOrders AS(  
Main query[With a lot of Joins]
)
SELECT  [Manupulated_Resultset_1]
FROM    allOrders 

WITH allOrders AS(  
Main query[With a lot of Joins]
)
SELECT  [Manupulated_Resultset_2]
FROM    allOrders 

WITH allOrders AS(  
Main query[With a lot of Joins]
)
SELECT  [Manupulated_Resultset_3]
FROM    allOrders 

因此,对于这三个部分,它访问数据库 3 次,而对于所有情况,主查询保持不变,只有子查询发生变化。我知道这可以以更好的方式完成。所以我需要一种方法来存储一次主查询结果,然后使用它来获取不同的操作结果。

我不能在 ColdFusion 中使用查询查询来获取操纵的结果集,它涉及到很多 QOQ 不支持的操作。

那么SQL中有什么办法吗?

4

2 回答 2

5

创建存储过程,使用临时表存储结果,main query然后一次性返回多个结果集给客户端:

create procedure proc_name
as
set nocount on
;with allOrders as (  
Main query[With a lot of Joins]
)
select *
into #allOrders
from allOrders;

SELECT  [Manupulated_Resultset_1]
FROM    #allOrders;
SELECT  [Manupulated_Resultset_2]
FROM    #allOrders;
SELECT  [Manupulated_Resultset_3]
FROM    #allOrders;

GO

http://www.adobe.com/devnet/coldfusion/articles/stored_procs.html

于 2014-04-21T08:12:24.077 回答
0

使用查询查询或创建连接必要表的数据库视图,以便您可以将一些用于数据库端的资源分配。最佳实践是存储过程

于 2014-04-22T19:23:10.297 回答