Oracle PL/SQL表记录类型

Posted sunziying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle PL/SQL表记录类型相关的知识,希望对你有一定的参考价值。

一、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表记录类型的主要内容,如果未能解决你的问题,请参考以下文章

Oracle_PL/SQL 集合

SQL记录-PLSQL集合

带有 PL SQL 表类型参数的 Oracle 存储过程的 JDBC 调用

在 oracle pl/sql 中如何选择嵌套类型?

带有 IF 语句的 PL/SQL Oracle 查询

Oracle PL/SQL 第五章–复合类型