在 FOR 循环中第一次选择 20 条记录并在 oracle 中再次休息时出错

Posted

技术标签:

【中文标题】在 FOR 循环中第一次选择 20 条记录并在 oracle 中再次休息时出错【英文标题】:Getting error while select 20 record for first time in FOR loop and rest for anther time in oracle 【发布时间】:2018-12-18 10:59:52 【问题描述】:

在 Oracle 中,我通过使用 PL/SQL 变量 type v_arr is varray(25) of varchar2(20) 获得了总共 36 条记录。在 PL/SQL 块内,我使用 2 个不同的 FOR loop 进行 2 个不同的操作。在我第一次使用

For i in 1 .. v_arr.count(20) loop

下次我使用for i in v_arr.count(21) .. v_arr.count loop

编译后,两种情况都出现错误。如何解决这个问题。请帮帮我。

【问题讨论】:

v_arr.count(20) 无效,因为您可能会遇到错误。你想让(20) 做什么?计数就是计数。 “下一次……” - 什么是“下一次”,你想发生什么? Varrays 并不是真正用于 PL/SQL 编程 - 普通的 table of 构造提供了更多有用的功能。 【参考方案1】:

以巴巴罗斯的例子为基础,也许你想要这样的东西:

declare
    type a_arr is table of varchar2(20);
    arr  a_arr := a_arr
         ( 'un1','un2','un3','un4','un5','un6','un7','un8','un9','un10'
         , 'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20'
         , 'x1','x2','x3' );
begin  
    for i in 1..least(arr.count,20) loop
        dbms_output.put_line(arr(i));
    end loop;

    if arr.count > 20 then
        for i in 21..arr.count loop
            dbms_output.put_line(arr(i));
        end loop;
    end if;        
end;

【讨论】:

威廉的好方法 @William 当我运行上述程序时,直到 1 到 20 时,分析表格的差距较小。但是从第 21 模式来看,第 20 和第 21 模式分析之间存在更多差距。那么如何解决这个问题。请帮帮我。 您正在收集统计数据?不确定这与问题有何关系。 @WilliamRobertson ***.com/questions/53871088/… 这里我提到了【参考方案2】:

我想你想要这个

SQL> set serveroutput on;

SQL> declare
  type a_arr is varray(20) of varchar2(20);
  arr  a_arr:=a_arr('un1','un2','un3','un4','un5','un6','un7','un8','un9','un10',
                    'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20');
begin  
 for i in 1..arr.count
  loop
    dbms_output.put_line(arr(i));
  end loop; 
end;  

【讨论】:

我已经完成了,但是它花费了太多时间,而且它只适用于第一个循环,我也想要第二个循环。 用了多长时间?它在我的笔记本电脑上运行了 0.001 秒。 @Barbaros 当我运行上述程序时,直到 1 到 20 时,分析表格的差距较小。但是从第 21 模式来看,第 20 和第 21 模式分析之间存在更多差距。那么如何解决这个问题。请帮帮我。

以上是关于在 FOR 循环中第一次选择 20 条记录并在 oracle 中再次休息时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中制定 FOR EACH 循环?

检测for循环中的最后一条记录

如何使用 Ajax 在循环中单独发送记录

为每条记录解析一个带有 FOR 循环的 JSON 列?

for循环每次展示固定条数的数据的写法。

十大排序算法之选择排序