plsql_block ::=
   [ << label_name >> ]
   [ DECLARE ]
   [ { type_definition | item_definition }
        [ type_definition | item_definition ] ... ]
   [ {function_declaration | procedure_declaration }
        [ function_declaration | procedure_declaration] ... ]
   BEGIN statement [statement ...]
   [ EXCEPTION exception_handler [exception_handler ...] ]
   END [ label_name ] ;

type_definition ::=
   { record_type_definition
   | ref_cursor_type_definition
   | table_type_definition
   | subtype_definition
   | varray_type_definition
   }

subtype_definition ::=
   subtype_definition ::=
SUBTYPE subtype_name IS base_type
   [ (constraint) ] [ NOT NULL ];