我正在處理一段我想優化的sql。 我有一堆遊標。 我想知道如果我可以使用別的東西而不是遊標。 我正在考慮使用某種變量,填充它們,以及其他治療避免數據庫連接(我有一個複雜的治療)。Oracle優化查詢避免遊標
例如我有這樣一段代碼:
TYPE rec_basket IS RECORD (
FIELD1 VARCHAR2(40),
FIELD2 NUMBER(10),
FIELD3 VARCHAR2(6)
);
TYPE tab_basket IS TABLE OF rec_basket
INDEX BY BINARY_INTEGER;
........................
CURSOR cur_baskets
IS
select * from toto
............................
FOR i IN cur_baskets
LOOP
l_tab_basket (l_nbasket).field1 := i.field1;
l_tab_basket (l_nbasket).field2 := i.field2;
l_tab_basket (l_nbasket).field3 := i.field3;
l_nbasket := l_nbasket + 1;
END LOOP;
使用光標和填充l_tab_basket變量是最好的方式走?我在我的代碼中使用了l_tab_basket(索引)。 我把這段代碼的原因是我想爲其他遊標使用這種機制。 其實我有一個光標在另一個裏面。對於他們每個人的每一行我都有一些治療。我想用別的東西替換遊標,但我不知道如何。 謝謝。
我們需要更多的上下文 - 我不需要遊標或用戶定義的類型,只需要一個派生表/內聯視圖,但我不知道它用於什麼。 – 2010-09-02 16:01:32
上下文同上。這個過程應該是什麼樣的大綱,需要多長時間,以及這個過程中的主要貢獻。 – 2010-09-02 22:51:36