What is PL/SQL block?

In PL/SQL, the code is not executed in single line format, but it is always executed by grouping the code into a single element called Blocks. In this tutorial, you are going to learn about these blocks.

Blocks contain both PL/SQL as well as SQL instruction. All these instruction will be executed as a whole rather than executing a single instruction at a time.

In this tutorial, you will learn:

Block Structure

PL/SQL blocks have a pre-defined structure in which the code is to be grouped. Below are different sections of PL/SQL blocks.

  1. Declaration section
  2. Execution section
  3. Exception-Handling section

The below picture illustrates the different PL/SQL block and their section order.

Blocks in PL/SQL

Declaration Section

This is the first section of the PL/SQL blocks. This section is an optional part. This is the section in which the declaration of variables, cursors, exceptions, subprograms, pragma instructions and collections that are needed in the block will be declared. Below are few more characteristics of this part.

  • This particular section is optional and can be skipped if no declarations are needed.
  • This should be the first section in a PL/SQL block, if present.
  • This section starts with the keyword ‘DECLARE’ for triggers and anonymous block. For other subprograms, this keyword will not be present. Instead, the part after the subprogram name definition marks the declaration section.
  • This section should always be followed by execution section.

Execution Section

Execution part is the main and mandatory part which actually executes the code that is written inside it. Since the PL/SQL expects the executable statements from this block this cannot be an empty block, i.e., it should have at least one valid executable code line in it. Below are few more characteristics of this part.

  • This can contain both PL/SQL code and SQL code.
  • This can contain one or many blocks inside it as a nested block.
  • This section starts with the keyword ‘BEGIN’.
  • This section should be followed either by ‘END’ or Exception-Handling section (if present)

Exception-Handling Section:

The exception is unavoidable in the program which occurs at run-time and to handle this Oracle has provided an Exception-handling section in blocks. This section can also contain PL/SQL statements. This is an optional section of the PL/SQL blocks.

  • This is the section where the exception raised in the execution block is handled.
  • This section is the last part of the PL/SQL block.
  • Control from this section can never return to the execution block.
  • This section starts with the keyword ‘EXCEPTION’.
  • This section should always be followed by the keyword ‘END’.

The Keyword ‘END’ marks the end of PL/SQL block.

PL/SQL Block Syntax

Below is the syntax of the PL/SQL block structure.

Blocks in PL/SQL

DECLARE --optional

BEGIN   --mandatory
    <executable statements. At least one executable statement is mandatory>

EXCEPTION --optional 
    <exception handles>

END;   --mandatory

Note: A block should always be followed by ‘/’ which sends the information to the compiler about the end of the block.

Types of PL/SQL block

PL/SQL blocks are of mainly two types.

  1. Anonymous blocks
  2. Named Blocks

Anonymous blocks:


Anonymous blocks are PL/SQL blocks which do not have any names assigned to them. They need to be created and used in the same session because they will not be stored in the server as database objects.

Since they need not store in the database, they need no compilation steps. They are written and executed directly, and compilation and execution happen in a single process.

Below are few more characteristics of Anonymous blocks.

  • These blocks don’t have any reference name specified for them.
  • These blocks start with the keyword ‘DECLARE’ or ‘BEGIN’.
  • Since these blocks do not have any reference name, these cannot be stored for later purpose. They shall be created and executed in the same session.
  • They can call the other named blocks, but call to anonymous block is not possible as it is not having any reference.
  • It can have nested block in it which can be named or anonymous. It can also be nested in any blocks.
  • These blocks can have all three sections of the block, in which execution section is mandatory, the other two sections are optional.

Named blocks:

Named blocks have a specific and unique name for them. They are stored as the database objects in the server. Since they are available as database objects, they can be referred to or used as long as it is present on the server. The compilation process for named blocks happens separately while creating them as a database objects.

Below are few more characteristics of Named blocks.

  • These blocks can be called from other blocks.
  • The block structure is same as an anonymous block, except it will never start with the keyword ‘DECLARE’. Instead, it will start with the keyword ‘CREATE’ which instruct the compiler to create it as a database object.
  • These blocks can be nested within other blocks. It can also contain nested blocks.
  • Named blocks are basically of two types:
  1. Procedure
  2. Function

We will learn more about these named blocks in “Procedure” and “Function” topics in later tutorial.


After this tutorial, you should be aware of PL/SQL blocks and its types, different sections of blocks and their usages. The detailed description of the named PL/SQL blocks will be covered in the later tutorial.