admin

Oracle批量收集问题

sql

我遇到了一个大块收集sql的问题,我希望您能提供帮助。

使用以下代码:

declare
    cursor c1
    is
    select customer,product
    from products;

    type type_cust is table of products.customer%type;
    type type_prod is table of products.product%type;

    v_array_cust    type_cust;
    v_array_prod    type_prod;
begin
    open c1;
    loop
        fetch c1 
        into v_array_cust, v_array_prod
        limit 1000;

        exit when c1%notfound;

        for i in 1..v_array_cust.count
        loop
            --Do some processing here.
        end loop;
    end loop;
end;
/

游标c1返回53166行。

但是,代码处理53000行,然后结束。似乎在检索最后的166条记录时,会出现某种故障。

如果发现少于1000条记录,提取是否将返回%notfound?我应该将出口移到循环的末尾吗?(我将尝试这种方法,但要深入到一段代码中,它需要3个小时才能到达故障点。)

提前致谢。


阅读 162

收藏
2021-06-07

共1个答案

admin

好吧,比我已经做的更好的谷歌搜索给了我答案,你不应该使用%notfound与limit。

检查这里的解释。

2021-06-07