oracle 数组类型

来源:互联网 发布:caxa怎样编程 编辑:程序博客网 时间:2024/05/16 06:27

 http://fxz-2008.iteye.com/blog/469766

oracle数组例子

    博客分类:
  • Oracle
Oracle
Pl/sql代码 复制代码 收藏代码
  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;