zoukankan      html  css  js  c++  java
  • PLSQL表

    PL/SQL表

    一,什么是PL/SQL表?
    首先PL/SQL表和记录(Record)一样,都是复合数据类型。可以看做是一种用户自定义数据类型。
    PL/SQL表由多列单行的标量构成的临时索引表对象。组成类似于一维数组。
    区别和联系记录(Record)的单行多列和物理存储数据的表。
    Record + PL/SQL表可以进行数据的多行多列存储。
    生命周期在程序块内。


    二,PL/SQL表的组成结构
    PL/SQL表只有两列,其中第一列为索引列为Integer类型索引列,9i后可以支持字符索引。第二列为用户自定义列,声明用户可用列类型.
    通过索引列中的索引值来操作PL/SQL表中对应的用户自定义列。类似于键值对。
    确保索引值的唯一性。如果索引值重复不会报错,会覆盖前面的值。

    三,如何创建和使用PL/SQL表?

    ①声明PL/SQL表类型对象
    语法:
       TYPE PL/SQL表名 IS TABLE OF 可用列类型 [NOT NULL]
        INDEX BY BINARY_INTEGER;

    可用列类型可以为Oracle的数据类类型以及用户自定义类型;

    属性方法:
       count --返回pl/sql表的总行数;
       delect --删除pl/sql表的所有内容;
       delect(行数) --删除pl/sql表的指定的行;
       delct(开始行,结束行) --删除pl/sql表的多行;
       first --返回表的第一个INDEX;
       next(行数) --这个行数的下一条的INDEX;
       last --返回表的最后一个INDEX;

    ②声明PL/SQL表类型变量:
    语法:
       PL/SQL表类型变量名   PL/SQL表类型;

    ③数据填充和访问
    语法:
       PL/SQL表类型变量名(索引列值) := 填充声明类型值;
      
       PL/SQL表类型变量名.属性方法名;

    例子:

      ---PLSQL 表,先定义表类型,再定义表变量  l  类似于JAVA中的数组
      declare 
           type ename_table_type is table of emp.ename%type  index  by binary_integer;
           ename_table  ename_table_type;
      begin 
           select ename into ename_table(-1)  from emp  where empno=7788;
           dbms_output.put_line('雇员名:'||ename_table(-1));     
       end;  
    
    
    declare 
         type mytabtype is table of varchar2(10) index by binary_integer;
         mytab mytabtype;
         vn number(4);
    begin 
         mytab(1):='A';
         mytab(2):='B';
         mytab(3):='C';
         vn:=mytab.first;
         dbms_output.put_line('first index: '||vn);    
         vn :=mytab.last;
         dbms_output.put_line('last index: '||vn);
        DBMS_OUTPUT.PUT_LINE('  First值:'||MyTab(MyTab.First)); 
      end; 


      例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表例子:使用循环填充和访问PL/SQL表  例子:使用循环填充和访问PL/SQL表

    --使用循环填充和访问PLSQL表
     declare 
          type mytabtype is table of  varchar2(10) index by binary_integer;
          mytab mytabtype;
          vn number;
    begin 
         for varE in (select empno,ename from emp a order by ename)
         loop 
              mytab(varE.empno):=varE.ename;
          end loop;
          vn:=mytab.first;
          for i in 1.. mytab.count
          loop
             dbms_output.put_line(vn||'=='||mytab(vn));        
             vn:=mytab.next(vn);
           end loop;
      end;        
    --向PLSQL表中插入数据 .
    declare 
              type mytabtype is table of  varchar2(10) index by binary_integer;
               mytab mytabtype;
           begin 
                mytab(1):='A';
                mytab(2):='B';
                mytab(3):='C';    
             dbms_output.put_line('index 3:'|| mytab(3));
             mytab(3):='D';
            dbms_output.put_line('index 3:'|| mytab(3));
      end;      
  • 相关阅读:
    Servlet的生命周期及工作原理
    抓包---firebug
    firebug抓包
    token认证来龙去脉
    性能测试报告注意事项
    性能测试报告
    Error -26601解决办法
    lr新手误区
    css定位
    xpath定位
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300362.html
Copyright © 2011-2022 走看看