您的当前位置:首页正文

对于一个无参数的返回类型为记录的函数来说

2020-06-05 来源:步旅网


DECLARE

TYPE stockitem IS RECORD(

item_no INTEGER(3) NOT NULL := 999,

description VARCHAR2(50),

quantity INTEGER,

price REAL(7, 2)

);

BEGIN

...

END;

3、引用记录

同集合中的元素不同,它们的引用方式是使用下标索引,而记录对于它的域的引用要使用名称。语法如下:

record_name.field_name

例如,我们想访问记录emp_info下的hire_date域,那么就要使用:

emp_info.hire_date ...

在调用一个返回用户定义的记录类型的函数时,要使用下面的语法:

function_name(parameter_list).field_name

例如,下例对函数nth_highest_sal的调用就引用到记录类型emp_info的salary域:

DECLARE

TYPE emprec IS RECORD(

emp_id NUMBER(4),

job_title VARCHAR2(9),

salary NUMBER(7, 2)

);

middle_sal NUMBER(7, 2);

FUNCTION nth_highest_sal(n INTEGER)

RETURN emprec IS

emp_info emprec;

BEGIN

...

RETURN emp_info; -- return record

END;

BEGIN

middle_sal := nth_highest_sal(10).salary; -- call function

...

END;

对于一个无参数的返回类型为记录的函数来说,要使用下面的语法引用记录中的字段:

function_name().field_name -- note empty parameter list

而对于返回类型是一个包含嵌套域的记录的函数来说,引用字段的语法如下:

function_name(parameter_list).field_name.nested_field_name

下面看一个记录包含记录的例子:

DECLARE

TYPE timerec IS RECORD(

minutes SMALLINT,

hours SMALLINT

);

TYPE agendaitem IS RECORD(

priority INTEGER,

subject VARCHAR2(100),

DURATION timerec

);

FUNCTION item(n INTEGER)

RETURN agendaitem IS

item_info agendaitem;

BEGIN

...

RETURN item_info; -- return record

END;

BEGIN

NULL;

IF item(3).duration.minutes > 30 THEN ... -- call function

END;

因篇幅问题不能全部显示,请点此查看更多更全内容