2012-02-13 56 views
0

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

回答

4

如果你在談論結構,如

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的人來處理這些問題連接查詢將更具可讀性。另一方面,如果你正在做一次小表的一次性更新,那麼編寫一個快速模塊可以更快,更容易地完成這種循環,並交給其他人審查,而不必驗證加入兩個大型查詢不會做任何意想不到的事情。