ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 记录的index表介绍

记录的index表介绍

原创 Linux操作系统 作者:zhanghuipop 时间:2009-10-15 17:30:42 0 删除 编辑

index表定义:

TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY BINARY_INTERGET;

例如:
1、TYPE   emp_type_array   IS   TABLE   OF   number   INDEX   BY   BINARY_INTEGER;

2、TYPE   emp_type   IS   RECORD  
  (   emp_id   employee_table.emp_id%TYPE,  
  emp_name   employee_table.emp_name%TYPE,  
  emp_gender   employee_table.emp_gender%TYPE   ); 
  TYPE   emp_type_array   IS   TABLE   OF   emp_type   INDEX   BY   BINARY_INTEGER;    

这里面重要的关键字是INDEX BY BINARY_INTERGET,没有这个关键字,那么集合将是一个嵌套表。
element_type可以是任何合法的PL/SQL数据类型,包括:PLS/INTEGER、SIGNTYPE、和BOOLEAN。
其他的集合类型对数据库的数据类型都有限制,但Index_by表不能存储在数据库中,所以没有这些限制。

记录的定义——  b、记录的使用.txt

记录的index-by表:
注意:赋值
方法一:
DECLARE  
   
  TYPE   emp_type   IS   RECORD  
  (   emp_id   employee_table.emp_id%TYPE,  
  emp_name   employee_table.emp_name%TYPE,  
  emp_gender   employee_table.emp_gender%TYPE   );  
   
  TYPE   emp_type_array   IS   TABLE   OF   emp_type   INDEX   BY   BINARY_INTEGER;  
   
  emp_rec_array   emp_type_array;  
  emp_rec   emp_type;  
   
  BEGIN  
  emp_rec.emp_id   :=   300000000;  
  emp_rec.emp_name   :=   'Barbara';  
  emp_rec.emp_gender   :=   'Female';  
   
  emp_rec_array(1)   :=   emp_rec;  
   
  emp_rec.emp_id   :=   300000008;  
  emp_rec.emp_name   :=   'Rick';  
  emp_rec.emp_gender   :=   'Male';  
   
  emp_rec_array(2)   :=   emp_rec;  
   
  FOR   i   IN   1..emp_rec_array.count   LOOP  
  DBMS_OUTPUT.PUT_LINE('i='||i  
  ||',   emp_id   ='||emp_rec_array(i).emp_id  
  ||',   emp_name   ='||emp_rec_array(i).emp_name  
  ||',   emp_gender   =   '||emp_rec_array(i).emp_gender);  
  END   LOOP;    
   
  END; 
--------------   Result   --------------  
  i=1,   emp_id   =300000000,   emp_name   =Barbara,   emp_gender   =   Female  
  i=2,   emp_id   =300000008,   emp_name   =Rick,   emp_gender   =   Male

方法二:
DECLARE  
   TYPE   emp_type   IS   RECORD  
  (   emp_id   employee_table.emp_id%TYPE,  
  emp_name   employee_table.emp_name%TYPE,  
  emp_gender   employee_table.emp_gender%TYPE   ); 
 
  TYPE   ArtSort   is   table   of   emp_type   index   by   binary_integer;  
          vSort   ArtSort;  
          nSortIndex   binary_integer;  
          cursor   c   is  
              select   *   from   table1;  
  使用:  
              nSortIndex   :=   0;  
              for   r   in   c   loop  
                  nSortIndex   :=   nSortIndex   +   1;  
                  vSort(nSortIndex).emp_id     :=   r.gid;  
                  vSort(nSortIndex).emp_name     :=   r.name;    
              end   loop;
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14613712/viewspace-616670/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Lag和Lead函数
请登录后发表评论 登录
全部评论

注册时间:2009-10-14

  • 博文量
    21
  • 访问量
    35228