ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【笔记】复合变量

【笔记】复合变量

原创 Linux操作系统 作者:klamm0 时间:2009-11-18 15:50:27 0 删除 编辑

1.pl/sql记录。示例如下:

   declare

type emp_record_type is record(

   name emp.ename%type,

  salary emp.sal%type,

  title emp.job%type);

emp_record  emp_record_type;

begin

select ename,sal,job into emp_record

from emp where empno=7788;

dbms_output.put_line('雇员名:'||emp_record.name);

end;

2.pl/sql表:pl/sql表类似于高级语言中的数组。需要注意:pl/sql表语高级语言的数组有所区别,pl/sql表的下标可以为负,pl/sql表的元素个数没有限制,并且其下标没有上下限。必须首先定义pl/sql表类型和变量,才能使用。不可作为表列的数据类型。如:

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) );

3.嵌套表:嵌套表(nested table)类似于高级语言中的数组。需要注意:高级语言和嵌套表的下标都不能为负值;嵌套表的元素个数没有限制。嵌套表可以作为表列的数据类型。使用create type语句建立嵌套表类型。如:

  create or replace type emp_type as object(

    name varchar2(10),salary number(6,2),hiredate date);

  /

  create or replace type emp_array is table of emp_type;

/

     如例所示,对象类型emp_type用于存储雇员信息,而emp_array是基于emp_type的嵌套表类型,它可以用于存储多个雇员信息。可以再表列或对象属性中将嵌套表作为自定义数据类型来引用。需要注意:作为表列时,必须要为其指定专门的存储表。如:

  create table  department(

     deptno number(2),dname varchar2(10),

     employee emp_arry

)  nested table employee store as employee;

4.varray:类似于嵌套表,可以作为表列和对象类型属性的数据类型。但需要注意:嵌套表的元素个数没有限制,但是varray的元素个数是有限制的。如:

   create type article_type as object (

   title varchar2(30),pubdate date);

/

   create type article_array is varray(20) of article_type;

/

   如例所示,对象类型article_type用于存储文章信息,而article_array用于存储多篇文章的信息,并且最多可以存储20篇文章。当建立了varray类型之后,可以再表列或对象属性中将其作为用户自定义数据类型来引用。如:

   create table author (

  id  number(6),name varchar2(10),article article_array );

    注意,嵌套表列数据需要存储在专门的存储表中,而varray数据则与其他数据一起存放在表段中。

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

请登录后发表评论 登录
全部评论

注册时间:2009-10-30

  • 博文量
    58
  • 访问量
    58090