我正在处理一段我想优化的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