In Oracle PL/SQL, the RECORD data type is used to define a composite data type that consists of one or more fields. A RECORD data type is similar to a row in a database table, but it is not associated with any particular table. Instead, it is used to group related data items together into a single data structure.


To define a RECORD data type, you use the following syntax:

TYPE record_type IS RECORD (
   field1 datatype1,
   field2 datatype2,

Here, record_type is the name of the data type, and field1, field2, etc. are the names of the fields in the record. Each field is defined with a datatype, such as VARCHAR2 or NUMBER.


Once you have defined a RECORD data type, you can declare variables of that type and assign values to its fields. For example:

   TYPE person_type IS RECORD (
      first_name VARCHAR2(50),
      last_name VARCHAR2(50),
      age NUMBER

   p person_type;
   p.first_name := 'John';
   p.last_name := 'Doe';
   p.age := 30;

In this example, we have defined a person_type RECORD data type with three fields: first_name, last_name, and age. We then declare a variable p of type person_type and assign values to its fields using dot notation.

You can also use RECORD data types as parameters to procedures and functions. For example:

CREATE OR REPLACE PROCEDURE print_person(p_person person_type) IS
   DBMS_OUTPUT.PUT_LINE('Name: ' || p_person.first_name || ' ' || p_person.last_name);
   DBMS_OUTPUT.PUT_LINE('Age: ' || p_person.age);

This procedure takes a person_type RECORD as a parameter and prints out the person’s name and age.

In summary, the RECORD data type in Oracle PL/SQL is a useful way to group related data items together into a single data structure. It can be declared and assigned values like any other variable, and can be used as a parameter to procedures and functions.