常用数组定义方式

  oracle本身没有java中数组的概念,不过,平常很多人将下面存储数据的方式称作数组,所以个人暂时也就这样记忆吧。
1,个人常用二维数组的定义如下:(模仿下标都为数字的二维数组)

Type ARRAY1 is TABLE OF number  index by binary_integer;

Type ARRAY2 is TABLE OF ARRAY1 index by binary_integer;

canshu  ARRAY2;

2,常规语法如下:

declare 

type type_array is table of t_user%rowtype index by binary_integer;  --类似二维数组 

var_array type_array;

  begin     

 select * bulk collect into var_array from t_user; 

     for i in 1..var_array.count loop       

   dbms_output.put_line(var_array(i).user_id);          --二维数组的访问       

   dbms_output.put_line(var_array(i).username);     

 end loop; 

end;

3,数组的常用方式如下(摘自网络)

  1. --固定数组  
  2. declare  
  3.   type type_array is varray(10) of varchar2(20);  
  4.   var_array type_array:=type_array('ggs','jjh','wsb','csl','dd','bb');  
  5. begin  
  6.   for i in 1..var_array.count loop  
  7.       dbms_output.put_line(var_array(i));  
  8.   end loop;  
  9. end;  
  10.   
  11. --可变数组  
  12. declare   
  13.   type type_array is table of varchar2(20) index by binary_integer;  
  14.   var_array type_array;  
  15. begin   
  16.   var_array(1):='aa';  
  17.   var_array(2):='bb';  
  18.     
  19.   for i in 1..var_array.count loop  
  20.      dbms_output.put_line( var_array(i));  
  21.   end loop;  
  22.     
  23. end;  
  24.   
  25. --可变数组取表  
  26. declare  
  27. begin  
  28.     
  29. end;  
  30.   
  31. create or replace procedure proc_stock(n number)  
  32. as       
  33.        var_stock_code varchar2(10);  
  34.        var_stock_price number;  
  35. begin  
  36.        for i in 1..n loop  
  37.            var_stock_code:= lpad(STR1 =>i ,LEN =>6 ,PAD =>'0' ) ;  
  38.              
  39.            var_stock_price:=trunc(dbms_random.value*100)+1;  
  40.            --dbms_output.put_line(var_stock_code);  
  41.            --dbms_output.put_line(var_stock_price);  
  42.            insert into t_stock (stockcode,stockprice)   
  43.                   values(var_stock_code,var_stock_price);  
  44.            commit;         
  45.        end loop;  
  46. end;  
  47. declare  
  48. begin  
  49.        proc_stock(1000000);  
  50. end;  
  51. --用游标访问 14.578秒 13.5 13.8  
  52. declare  
  53.        cursor cur is select * from t_stock;  
  54.        row_stock t_stock%rowtype;  
  55. begin  
  56.        open cur;  
  57.        loop   
  58.             fetch cur into row_stock;  
  59.             exit when cur%notfound;  
  60.             null;  
  61.        end loop;  
  62.        close cur;  
  63. end;  
  64.   
  65. --用数组实现 4.813 1.953 2  
  66. declare  
  67.        type type_array is table of t_stock%rowtype index by binary_integer;  
  68.        var_array type_array;  
  69. begin  
  70.        select * bulk collect into var_array from t_stock;  
  71.        for i in 1..var_array.count loop            
  72.            null;  
  73.        end loop;  
  74. end;  
  75.   
  76. --访问自定义表  
  77. declare  
  78.        type type_record is record(  
  79.             username varchar2(20),  
  80.             sex varchar2(2)  
  81.        );  
  82.        type_record_user  type_record;  
  83.        type type_array is table of type_record_user%type index by binary_integer;  
  84.        var_array type_array;         
  85. begin  
  86.        select username,sex bulk collect into var_array from tuser;  
  87.        for i in 1..var_array.count loop  
  88.            dbms_output.put_line(var_array(i).username);  
  89.            dbms_output.put_line(var_array(i).sex);  
  90.        end loop;  
  91. end; 
原文地址:https://www.cnblogs.com/akami/p/6927934.html