簡體   English   中英

嵌套內部游標PL / SQL

[英]Nested Inner Cursors PL/SQL

我只是想知道在PL / SQL中使用嵌套或內部顯式游標何時可行。 可以始終使用JOINS避免這種情況嗎?
以實際方式使用內部游標的任何示例都將很棒! 先感謝您。

如果您談論的是類似

FOR outer IN (<<query A>>)
LOOP
  FOR inner IN (<<query B that depends on data from the outer query>>)
  LOOP
    <<do something>>
  END LOOP;
END LOOP;

從本質上講(即,除非優化器選擇了一個錯誤的方案,而且不可能以其他任何方式解決該問題),組合兩個查詢並進行聯接總是會更加高效。 SQL引擎具有更大的靈活性來確定如何聯接兩個表(或兩個查詢),並且比您在PL / SQL引擎中編寫的代碼要好得多。

就是說,如果您正在處理少量數據,並且您(或其他正在維護系統的開發人員)在進行合並查詢時會遇到麻煩,那么從可維護性的角度來看,這樣的代碼循環可能是有正當理由的。 例如,這可能是來自其他語言的開發人員更願意閱讀的一種方法。 如果數據量很小,則手動編碼嵌套循環連接的額外開銷通常會相對較小,並且仍然可以產生可以接受的代碼。

就個人而言,我會盡量避免這種構造,但是我傾向於與正在處理大量數據的系統一起工作,並且傾向於與那些願意編寫適當的PL / SQL和適當的SQL的人一起工作,因此可以使用聯接進行查詢更具可讀性。 另一方面,如果您要對一張小桌子進行一次性更新,編寫一個執行這種循環的快速塊可能會更快更容易,然后將其交給其他人進行檢查,而不必驗證加入兩個大查詢不會做任何意外的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM