bulk collect

SQL> set serverout on
SQL> 
SQL> Declare
  2    Cursor Csr Is Select Level From dual Connect By Level<=12;
  3     Type T_Csr Is Table Of Varchar2(10);
  4    v_Csr T_Csr;
  5    i Number:=0;
  6    j Number;
  7  Begin
  8    Open Csr;
  9    Loop
 10       Fetch Csr Bulk Collect Into v_Csr;
 11      Exit When v_Csr.Count=0;
 12      i:=i+1;
 13      dbms_output.put_line('第 '||i||' 次取数');
 14  
 15      For j In v_Csr.first..v_Csr.Last Loop
 16          dbms_output.put_line(j);
 17      End Loop;
 18    End Loop;
 19  End;
 20  /
第 1 次取数
1
2
3
4
5
6
7
8
9
10
11
12
PL/SQL procedure successfully completed


SQL> 
SQL> Declare
  2    Cursor Csr Is Select Level From dual Connect By Level<=12;
  3     Type T_Csr Is Table Of Varchar2(10);
  4    v_Csr T_Csr;
  5    i Number:=0;
  6    j Number;
  7  Begin
  8    Open Csr;
  9    Loop
 10       Fetch Csr Bulk Collect Into v_Csr Limit 5;
 11      Exit When v_Csr.Count=0;
 12      i:=i+1;
 13      dbms_output.put_line('第 '||i||' 次取数');
 14  
 15      For j In v_Csr.first..v_Csr.Last Loop
 16          dbms_output.put_line(j);
 17      End Loop;
 18    End Loop;
 19  End;
 20  /
第 1 次取数
1
2
3
4
5
第 2 次取数
1
2
3
4
5
第 3 次取数
1
2
PL/SQL procedure successfully completed


SQL> 
SQL> Declare
  2    Cursor Csr Is Select Level From dual Connect By Level<=12;
  3     Type T_Csr Is Varray(5) Of Varchar2(10);
  4    v_Csr T_Csr;
  5    i Number:=0;
  6    j Number;
  7  Begin
  8    Open Csr;
  9    Loop
 10       Fetch Csr Bulk Collect Into v_Csr;
 11      Exit When v_Csr.Count=0;
 12      i:=i+1;
 13      dbms_output.put_line('第 '||i||' 次取数');
 14  
 15      For j In v_Csr.first..v_Csr.Last Loop
 16          dbms_output.put_line(j);
 17      End Loop;
 18    End Loop;
 19  End;
 20  /
Declare
  Cursor Csr Is Select Level From dual Connect By Level<=12;
  Type T_Csr Is Varray(5) Of Varchar2(10);
  v_Csr T_Csr;
  i Number:=0;
  j Number;
Begin
  Open Csr;
  Loop
    Fetch Csr Bulk Collect Into v_Csr;
    Exit When v_Csr.Count=0;
    i:=i+1;
    dbms_output.put_line('第 '||i||' 次取数');


    For j In v_Csr.first..v_Csr.Last Loop
        dbms_output.put_line(j);
    End Loop;
  End Loop;
End;
ORA-22165: 指定的索引 [6] 必须介于 [1] 到 [5] 之间
ORA-06512: 在 line 10


SQL> 
SQL> Declare
  2    Cursor Csr Is Select Level From dual Connect By Level<=12;
  3     Type T_Csr Is Varray(5) Of Varchar2(10);
  4    v_Csr T_Csr;
  5    i Number:=0;
  6    j Number;
  7  Begin
  8    Open Csr;
  9    Loop
 10       Fetch Csr Bulk Collect Into v_Csr Limit 3;
 11      Exit When v_Csr.Count=0;
 12      i:=i+1;
 13      dbms_output.put_line('第 '||i||' 次取数');
 14  
 15      For j In v_Csr.first..v_Csr.Last Loop
 16          dbms_output.put_line(j);
 17      End Loop;
 18    End Loop;
 19  End;
 20  /
第 1 次取数
1
2
3
第 2 次取数
1
2
3
第 3 次取数
1
2
3
第 4 次取数
1
2
3

PL/SQL procedure successfully completed


SQL> Declare
  2    Type T_Csr Is Table Of Varchar2(10);
  3    v_Csr T_Csr;
  4  Begin
  5    Select Level Bulk Collect Into v_Csr From dual Connect By Level<=3;
  6    For j In v_Csr.first..v_Csr.Last Loop
  7          dbms_output.put_line(j);
  8    End Loop;
  9  End;
 10  /
1
2
3
PL/SQL procedure successfully completed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值