我將很快描述。 有一列DestinationId
和一列HierarchyNodeId
目前有一個DestinationId多個HierarchyNodeIds。 我有一個查詢,給我每個DestinationId和HierarchyNodeId,我想保留。 所以我想用我從上面的查詢得到的每個DestinationId替換每個其他HierarchyNodeId。如何在PL/SQL中處理臨時查詢結果
- 我通過查詢創建一個循環。所以每個循環我有一個DestinationId(光標,「DestinationId」和一個特定的光標。「HierarchyNodeId」)
- 我有3個表包含列「HierarchyNodeId」,我想更新它們的全部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表中。
你可以給我們一些數據樣本和你想要的rsults嗎? –
@ A.B.Cade我將添加查詢,但不需要通過證明更多數據來使問題更重。我只是想知道是否可以將Select查詢的結果存儲到TEMP表中。然後刪除該臨時表並重新開始(每次循環回收) –
@a_horse_with_no_name正確! :) –