PLSQL表

来源:互联网 发布:伴读软件 编辑:程序博客网 时间:2024/06/05 16:10

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;      

 

0 0
原创粉丝点击