DECLARE:
This keyword signals the beginning of the declarative section of the PL/SQL block, that contains local declarations. The Items declared locally exist only within the present block and all its sub-blocks and are not noticeable to enclosing blocks. The declarative section of the PL/SQL block is optional. It is terminated implicitly by using the keyword BEGIN that introduces the executable section of the block.
The PL/SQL does not allow the forward references. Therefore, you should declare an item before referencing it in other statements, including the other declarative statements. You should also declare the subprograms at the end of a declarative part after all other program items.
collection_declaration:
These identify an index-by table, nested table, or varray previously declared within the present scope.
constant_declaration:
A constant can be declared by using this construct.
cursor_declaration:
These constructs declares an explicit cursor
cursor_variable_declaration
These construct declares the cursor variable.
exception_declaration
These construct declares an exception.
object_declaration
These identify an object (or instance of an object type) formerly declared within the present scope.