2013-01-08 83 views
0

我將很快描述。 有一列DestinationId 和一列HierarchyNodeId 目前有一個DestinationId多個HierarchyNodeIds。 我有一個查詢,給我每個DestinationId和HierarchyNodeId,我想保留。 所以我想用我從上面的查詢得到的每個DestinationId替換每個其他HierarchyNodeId。如何在PL/SQL中處理臨時查詢結果

  1. 我通過查詢創建一個循環。所以每個循環我有一個DestinationId(光標,「DestinationId」和一個特定的光標。「HierarchyNodeId」)
  2. 我有3個表包含列「HierarchyNodeId」,我想更新它們的全部3。
  3. 在每個循環週期我有查找所有HierarchyNodeIds關聯與光標的查詢。「目標-ID」(當前週期目標-ID)

我的問題是在步驟3中所述查詢從所述2選自3得到數據我想要更新的表格。 所以,如果我用它在我的更新 (例如

UPDATE table1 
SET table1."HierarchyNodeId"=cursor."HierarchyNodeId" 
WHERE table1."HierarchyNodeId" IN (queryfromstep3) 

) 然後,我將有一個問題,因爲當我做我的第一個UPDATE從queryfromstep3的結果將改變。

所以我在考慮將queryfromstep3的結果存儲到每個循環開始時的TEMP表中。

這可能在PL/SQL中嗎?非常感謝!

編輯:

這是我要存儲到一個臨時

SELECT "HierarchyNodeId" FROM 
(
Select t1."Counter", t2.* From 
      (SELECT "HierarchyNodeId", (SELECT "Description" 
      FROM "Destination" 
      WHERE "DestinationId" = hn."DestinationId") "Description", "DestinationId", 
     (SELECT "DestinationTypeId" 
      FROM "Destination" 
      WHERE "DestinationId" = hn."DestinationId") "DestinationTypeId" 
    FROM "HierarchyNode" hn 
WHERE "DestinationId" IN (SELECT "DestinationId" From(SELECT COUNT ("HierarchyNodeId"), "DestinationId" FROM "HierarchyNode" GROUP BY "DestinationId" HAVING COUNT ("HierarchyNodeId") > 1))) t2, 
(select COUNT (*) "Counter", "HierarchyNodeId" From "HierarchyDetail" 
Group By "HierarchyNodeId") t1 
Where t1."HierarchyNodeId" = t2."HierarchyNodeId" 
AND t2."DestinationId" = cur."DestinationId" 
AND t2."HierarchyNodeId" != cur."HierarchyNodeId" 
ORDER BY "DestinationId", "Counter" Desc 
) 

它基本上產生1柱的GUID的查詢。 但是,我做了第一次更新後,其中一些Guid將會改變。爲了避免我想在每個循環的開始將它存儲到TEMP表中。

+0

你可以給我們一些數據樣本和你想要的rsults嗎? –

+0

@ A.B.Cade我將添加查詢,但不需要通過證明更多數據來使問題更重。我只是想知道是否可以將Select查詢的結果存儲到TEMP表中。然後刪除該臨時表並重新開始(每次循環回收) –

+0

@a_horse_with_no_name正確! :) –

回答

相關問題