DECLARE
-- Define a record type.
TYPE individual_record IS RECORD
(individual_id INTEGER
,first_name VARCHAR2(30 CHAR)
,middle_initial individuals.middle_initial%TYPE
,last_name VARCHAR2(30 CHAR));
-- Define a variable of the record type.
individual INDIVIDUAL_RECORD;
BEGIN
-- Initialize the field values for the record.
individual.individual_id := 2;
individual.first_name := 'John';
individual.middle_initial := 'P';
individual.last_name := 'Morgan';
-- Insert into the table.
INSERT
INTO individuals
VALUES
(individual.individual_id
,individual.first_name
,individual.middle_initial
,individual.last_name);
-- Commit the work.
COMMIT;
END;
DECLARE
-- Define a record type.
TYPE individual_record IS RECORD
(individual_id INTEGER
,first_name VARCHAR2(30 CHAR)
,middle_initial individuals.middle_initial%TYPE
,last_name VARCHAR2(30 CHAR));
-- Define a variable of the record type.
individual INDIVIDUAL_RECORD;
-- Define a local function to return a record type.
FUNCTION get_row
(individual_id_in INTEGER)
RETURN INDIVIDUAL_RECORD IS
-- Define a cursor to return a row of individuals.
CURSOR c (individual_id_cursor INTEGER) IS
SELECT *
FROM individuals
WHERE individual_id = individual_id_cursor;
BEGIN
-- Loop through the cursor for a single row.
FOR i IN c(individual_id_in) LOOP
-- Return a %ROWTYPE from the INDIVIDUALS table.
RETURN i;
END LOOP;
END get_row;
BEGIN
-- Demonstrate function return variable assignment.
individual := get_row(1);
-- Display results.
dbms_output.put_line(CHR(10));
dbms_output.put_line('INDIVIDUAL_ID : '
|| individual.individual_id);
dbms_output.put_line('FIRST_NAME : '
|| individual.first_name);
dbms_output.put_line('MIDDLE_INITIAL : '
|| individual.middle_initial);
dbms_output.put_line('LAST_NAME : '
|| individual.last_name);
END;
/