码迷,mamicode.com
首页 > 数据库 > 详细

Oracle PL/SQL表、记录类型

时间:2018-01-29 17:32:29      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:oracl   body   类型   方法   使用   自定义   record   sele   ast   

一、PL/SQL表
pl/sql表只有两列,其中第一列为序号列为INTEGER类型,第二列为用户自定义列。
定义:
  TYPE <类型名> 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表只有一行,但是有多列。
定义:
  TYPE <类型名> IS RECORD <列名1 类型1,列名2 类型2,...列名n 类型n,> [NOT NULL]
<列的类型>可以为Oracle的数据类行以及用户自定义类型;可以是记录类型的嵌套。



三、结合使用PL/SQL表和PL/SQL记录
示例:

DECLARE
  CURSOR c_1 is select empno,ename,job,sal from emp;
  TYPE myrecord IS RECORD(empno emp.empno%type,ename emp.ename%type,job emp.job%type,sal emp.sal%type);--定义一个名为myrecoed的PL/sql记录类型;
  TYPE mytable IS TABLE OF myrecord index by binary_integer;    --定义一个名为mytable的PL/sql表类型;字段类型为PL/sql记录类型;

  n number:=1;
  tab_1 mytable;                     --为mytable类型实例化一个tab_1对象;
BEGIN
      --赋值
      for i in c_1
      loop
         tab_1(n).empno:=i.empno;
         tab_1(n).ename:=i.ename;                     
         tab_1(n).job:=i.job;
         tab_1(n).sal:=i.sal;
         n:=n+1;
       end loop;
       n:=1;
       --输出
       for i in n..tab_1.count
       loop
           dbms_output.put_line(i|| ||tab_1(i).empno|| ||tab_1(i).ename|| ||tab_1(i).job|| ||tab_1(i).sal);
       end loop;
END; 

 



Oracle PL/SQL表、记录类型

标签:oracl   body   类型   方法   使用   自定义   record   sele   ast   

原文地址:https://www.cnblogs.com/sunziying/p/8378127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!