ITPub博客

首页 > Linux操作系统 > Linux操作系统 > pl/sql记录表(一)

pl/sql记录表(一)

原创 Linux操作系统 作者:wisdomone1 时间:2011-09-23 18:11:00 0 删除 编辑
------------------------------------------------------------------
 ----------------pl/sql记录表-------------------------------------
 ------------------------------------------------------------------
 
 pl/sql记录表可以处理多行多列,可以理解为表
 
 示例代码如下:
    declare
       --它的每个元素类似于一行,故元素类型为%ROWTYPE,而非前面的%TYPE
       --元素下标类型为BINARY_INTEGER
      type emp_table_type is table of emp%rowtype index by binary_integer;
      emp_table emp_table_type;
    begin
     select * into emp_table(1) from emp where empno=&no;--提取表的一行记录到EMP_TABLE(1)
     dbms_output.put_line('EMPLOYEE:'||EMP_TABLE(1).ENAME);--显示表一行记录某个具体成员,在此为ENAME
    end;
    /
        
        
        
  
  
   集合方法
            它是ORACLE所提供的用于操纵集合变量的内置函数或过程,其中EXISTS,COUNT,LIMIT,FIRST,NEXT,
             PRIOR是函数,而EXTEND,TRIM,和DELETE是过程;
            
            
            集合方法的调用语法如下:
               COLLECTION_NAME.METHOD_NAME [(PARAMETERS)]     
           
            注意:
                 集合方法只能在PL/SQL语句中使用,而不能在SQL语句中调用
                
                 集合方法EXTEND和TRIM只适用于NESTED TABLE和VARRAY,而不适用于索引表
                
           
            1.exists
                 此方法用于确认集合元素是否存在,如存在,返回TRUE,否则为FALSE;
                
                 使用此集合方法的示例如下:
                   declare
                     type ename_table_type is table of emp.ename%type;
                     ename_table ename_table_type;
                   begin
                     if ename_table.exists(1) then
                         ename_table(1):='scott';      
                     else
                        dbms_output.put_line('必须初始化集合元素');   
                     end if;
                   end;/
                  
                  
            2,count
                 此方法用于返回当前集合变量中的元素总个数.如果集合元素存在数值,则统计结果
                   会包含此元素,如果集合元素为NULL,则统计结果不会包含此元素;
                
                 使用此方法的示例如下:
                    DECLARE
                          TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
                          ENAME_TABLE ENAME_TABLE_TYPE;
                       BEGIN
                         ENAME_TABLE(-5):='SCOTT';      
                         ENAME_TABLE(1):='AX';
                         DBMS_OUTPUT.PUT_LINE('COLLECTION TOTAL NUMBER:'||ENAME_TABLE.COUNT);
                       END;
                       /
           
           
            3,limit
                 此方法用于返回集合元素的最大个数,因为NESTED TABLE和索引表的元素个数没有限制,所
                  以调用此方法返回NULL,但对于VARRAY而言,此方法返回VARRAY所允许的最大元素个数
                
                 示例如下:
                    DECLARE
                          TYPE ENAME_TABLE_TYPE IS VARRAY(20) OF EMP.ENAME%TYPE;
                          ENAME_TABLE ENAME_TABLE_TYPE:=ENAME_TABLE_TYPE('MARY');            
                          BEGIN
                            DBMS_OUTPUT.PUT_LINE('COLLECTION ELEMENT MAX NUMBER:'||ENAME_TABLE.LIMIT);
                          END;
                         
                         
            4,FIRST和LAST
                 FIRST方法返回集合变量第一个元素的下标,而LAST返回集合变量最后一个元素的下标
                
                 示例如下:
                    DECLARE
                         TYPE ENAME_TABLE_TYPE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER;
                         ENAME_TABLE ENAME_TABLE_TYPE;
                       BEGIN               
                          ENAME_TABLE(-5):='SCOTT';
                          ENAME_TABLE(-2):='SMITH';
                          ENAME_TABLE(2):='MARY';
                          ENAME_TABLE(6):='BLAKE';
                          DBMS_OUTPUT.PUT_LINE('FIRST ELEMENT:'||ENAME_TABLE.FIRST);
                          DBMS_OUTPUT.PUT_LINE('LAST ELEMENT'||ENAME_TABLE.FIRST);
                       END;
                       /
                       以上代码返回的结果为:
                       first element:-5
                       last element:6
                      
                      
            5,prior和next
                 prior方法返回当前集合元素的前一个元素的下标,而NEXT方法返回当前集合元素的后一个元素的下标
                
                 示例如下:
                   declare
                     type ename_table_type is table of emp.ename%type index by binary_integer;
                     ename_table ename_table_type;
                   begin
                     ename_table(-5):='a';
                     ename_table(1):='b';
                     ename_table(3):='mary';
                     dbms_output.put_line('元素5的前一个元素:'||ename_table.prior(1));--返回是集合元素的下标,而非元素
                    
                   end;dbms_output.put_line('元素5的下一个元素:'||ename_table.next(1));
                   /
                       

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

下一篇: 存本取息
请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2188
  • 访问量
    12253620