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;
因篇幅问题不能全部显示,请点此查看更多更全内容