PL/SQL复合类型

1.PL/SQL 记录
   简介:类似于高级语言中的结构,处理单行数据 
         可以使用记录自定义类型、记录变量、%RowType定义记录变量

   好处:可以把这个记录集合当作一个类, 然后定义这个类的多个对象, 这个类中的字段即为
         用户筛选中需要的字段. 然后对对象直接可以访问这些字段. 就像表访问字段那样
   
   语法:tyep  type_record_name is  record(  --创建记录类型
            --数据类型
           )
           type_record type_record_name --指定记录变量名

   For example:
        
-- Created on 2012/10/5 星期五 by MM 
declare
  type emp_record_type is record(
       v_no emp.empno%type,
       v_name emp.ename%type,
       v_sal emp.sal%type
  );
  emp_record emp_record_type;
begin
  select empno,ename,sal into emp_record from emp where empno=7369;
  dbms_output.put_line(emp_record.v_no);
  dbms_output.put_line(emp_record.v_name);
  dbms_output.put_line(emp_record.v_sal);
end;


   除查询以外,在9i以后,可以insert,update,dellete也可以引用记录变量


2.PL/SQL 集合
   简介: 集合类似于高级语言中的数组, 处理单列多行的数据;
          包含 索引表(PL/SQL表),嵌套表(nested table),变长数组(varry)等;
   --索引表
   简介:索引 处理PL/SQL数组类型;元素个数没有限定,下标可以为负数。
         只能作为PL/SQL 复合类型使用,而不能作为表列的数据类型使用
  
   语法:type  type_table_name is table of  element_type  
        【not null】 index by  key_type;  
         type_table  type_table_name;
          --element_type索引表存放数据类型
          --not null 表示不允许有空元素
          --key_type(binary_integer,PLS_integer,varchar2);
   For example:
        
   
    --嵌套表
    简介:处理PL/SQL数组类型,元素下标从开始 元素没有限制;数组元素可以是稀疏的
          注:用时必须初始化构造方法,可以作为数据列表的数据类型使用;         

    语法:type  type_table_name is table of  element_type
           type_table type_table_name;

    For example:
          
     
    --变长数组(varray)
    简介:处理PL/SQL数组类型,可以作为表列的数据类型使用,下标从1开始 ,最大元素个数是有限制的
    
    语法:type  type_varry_type is  varry(size_limit) of element_type [not null] 
          type_varray type_varry_type;
          --size_limit是指定varry元素的最大个数;
   
    For example:
          

3.PL/SQL 记录表
   简介:处理多行多列数据,
   
    
For example:
       declare 
         type emp_table_type1 is record(        --  自定义记录
           ename scott.emp.ename%type,
           job   scott.emp.job%type
           );
        emp_table1 emp_table_type1;

        type emp_table_type is table of emp_table_type1  --自定义数据类型
        index by binary_integer;

        emp_table emp_table_type;

        counts number;

        begin 
        select count(*) into counts from emp;

        for i in 1..counts loop
          select t.ename,t.job into emp_table1 from 
          (select e.*,rownum rn from emp e)t where rn=i;
          emp_table(i) :=emp_table1;
        end loop;



    

    
    
    

             

   


  
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值