Referencing Records
Unlike the elements in a collection, that are accessed using subscripts, the fields in a record are accessed by name. To reference an individual field, you can use the dot notation and the syntax which is as shown:
record_name.field_name
For illustration, you reference field hire_date in record emp_info as shown:
emp_info.hire_date ...
When calling a function which returns a user-defined record, use the syntax below to reference the fields in the record:
function_name(parameter_list).field_name
For illustration, the call to function nth_highest_sal references to the field salary in record emp_info:
DECLARE
TYPE EmpRec IS RECORD (
emp_id NUMBER(4),
job_title CHAR(14),
salary REAL(7,2));
middle_sal REAL;
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
When calling a parameter less function, following syntax can be use:
function_name().field_name -- note empty parameter list
To reference the nested fields in a record returned by a function, use the extended dot notation. The syntax is as shown:
function_name(parameter_list).field_name.nested_field_name
For illustration, the following call to function item references to the nested field minutes in record item_info:
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
...
IF item(3).duration.minutes > 30 THEN ... -- call function
END;