anchor.diff:  function_body
       : FUNCTION identifier ('(' parameter (',' parameter)* ')')?
         RETURN type_spec (invoker_rights_clause | parallel_enable_clause | result_cache_clause | DETERMINISTIC)*
  -      ((PIPELINED? (IS | AS) (DECLARE? declare_spec* body | call_spec)) | (PIPELINED | AGGREGATE) USING implementation_type_name) ';'
  +      ((PIPELINED? (IS | AS) (DECLARE? seq_of_declare_specs? body | call_spec)) | (PIPELINED | AGGREGATE) USING implementation_type_name) ';'
       ;
   
   procedure_body
       : PROCEDURE identifier ('(' parameter (',' parameter)* ')')? (IS | AS)
  -      (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
  +      (DECLARE? seq_of_declare_specs? body | call_spec | EXTERNAL) ';'
       ;
   
   create_procedure_body
       : CREATE (OR REPLACE)? PROCEDURE procedure_name ('(' parameter (',' parameter)* ')')? 
         invoker_rights_clause? (IS | AS)
  -      (DECLARE? declare_spec* body | call_spec | EXTERNAL) ';'
  +      (DECLARE? seq_of_declare_specs? body | call_spec | EXTERNAL) ';'
       ;
   
   // Trigger DDLs
  
positive.code: create_function_body
      : CREATE (OR REPLACE)? FUNCTION function_name ('(' (','? parameter)+ ')')?
        RETURN type_spec (invoker_rights_clause | parallel_enable_clause | result_cache_clause | DETERMINISTIC)*
        ((PIPELINED? (IS | AS) (DECLARE? declare_spec* body | call_spec)) | (PIPELINED | AGGREGATE) USING implementation_type_name) ';'
      ;
  
  // Creation Function - Specific Clauses
  
negative.code:     ;
  
  // Elements Declarations
  
  seq_of_declare_specs
      : declare_spec+
      ;
  
  declare_spec
      : variable_declaration
  