记录类型

记录一个可以存储不同数据类型值的复合变量,与C,C++或JAVA的结构体类似。PL/SQL记录对保存表行数据或确定表行列有用。为了便于维护,可以声明表类型或游标类型变量,而不用创建新的记录类型。

1.声明记录

记录作为一个整体本身并没有值,不过每个单独成员或者字段都有值。PL/SQL中可以通过以下3种方法定义:

1.1基于表的记录类型

用表名加%ROWTYPE属性的方法可以声明一个记录类型,该记录类型的每个字段都和表中的一列相互对应,同时具有相同的名字。

DECLARE
  dept_info departments%ROWTYPE;

1.2基于游标的记录类型

对显示声明的游标或者游标变量加上%ROWTYPE的方法声明一个基于游标的记录类型,这个记录类型和游标具有相同的结构。

DECLARE
   CURSOR c1 IS
     SELECT department_id, department_name, location_id
     FROM departments;
   rec1 c1%ROWTYPE;

 

1.3自定义的记录类型

用TYPE...RECORD语句可以定义记录类型,该记录类型的字段名称和字段类型都需要明确定义,字段类型甚至可以是另一个记录类型。

DECLARE
   TYPE DeptRec1 IS RECORD
     (dept_num  NUMBER(2), dept_name VARCHAR2(14));
   dept1_info DeptRec1;

 

(注意:根据一个记录类型声明记录时,不需要使用%ROWTYPE)

 

%ROWTYPE声明格式:

record_name [schema_name.]object_name%ROWTYPE [DEFFAULT | := compatible_record];

其中object_name可以是一个显示游标、游标变量、表、视图或者同义词。

下面是基于一个游标变量创建记录类型的例子:

declare
  type vc_depart ref return departments%rowtype;
  dept_info vc_depart%rowtype;
begin
  null;
end;

 

2.定义记录类型

语法:

record_type_definition:

TYPE type_name IS RECORD
  ( field_declaration [, field_declaration]... ) ;

 

field_declaration:

field_name datatype [ [ NOT NULL ] { := | DEFAULT } expression ]

 

record_type_declaration:

record_name type_name ;

 

EXAMPlE:

declare
  type timerec is record(
    hours   smallint,
    minutes smallint);

  type meeting_type is record(
    date_held date,
    duration  timerec, -- NESTED RECORD
    location  varchar2(20),
    purpose   varchar2(50));

begin
  null;
end;

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值