Skip to main content

PL/SQL Data Types

PL/SQL Data Types in Oracle encompass scalar types (VARCHAR2, NUMBER), composite types (RECORD, TABLE), and reference types (REF CURSOR). These types define the structure and constraints of data stored in variables and database columns, ensuring integrity and efficient manipulation. They support operations like arithmetic calculations, string manipulation, and handling of complex data structures, enabling robust database applications in Oracle environments.


NUMBER:

Used for storing numeric data. It can be specified with precision and scale.

my_number NUMBER := 10;

 

VARCHAR2/CHAR

Used for storing character strings. VARCHAR2 is variable-length, while CHAR is fixed-length.

my_string VARCHAR2(50) := 'Hello, world!';

 

DATE/TIMESTAMP

Used for storing date and time data.

my_date DATE := TO_DATE('2024-04-20', 'YYYY-MM-DD');

 

BOOLEAN

Used for storing Boolean values (TRUE/FALSE).

is_valid BOOLEAN := TRUE;

 

BINARY_INTEGER/PLS_INTEGER

Used for integer values. PLS_INTEGER is more efficient in terms of memory usage.

my_integer BINARY_INTEGER := 42;

 

RECORD

Also known as a row type, it is used to define a structure that can hold multiple fields of different data types.

TYPE employee_record IS RECORD (

  emp_id NUMBER,

  emp_name VARCHAR2(100),

  emp_salary NUMBER

);

 

TABLE

There are three types:

        Associative Arrays (INDEX BY TABLE): Indexed by integers or strings.

        Nested Tables: Unordered collection of elements indexed by integers.

        VARRAY (Variable Size Arrays): Fixed-size array.

TYPE employee_table IS TABLE OF employee_record;

 

CLOB

Used to store large amounts of character data.

my_clob CLOB;

 

BLOB

Used to store large amounts of binary data.

my_blob BLOB;

 

OBJECT

Allows you to define your own data types with attributes and methods.

CREATE TYPE address_type AS OBJECT (

  street VARCHAR2(100),

  city VARCHAR2(50),

  state VARCHAR2(50)

);

 

REF CURSOR

Used to reference a result set returned by a SQL query.

my_cursor SYS_REFCURSOR;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments