package_spec ::=
CREATE [OR_REPLACE] PACKAGE [schema_name .] package_name
 [AUTHID {CURRENT_USER | DEFINER}] {IS | AS}  
 [PRAGMA SERIALLY_REUSABLE;]
 {collection_type_definition
 | record_type_definition
 | subtype_definition
 | collection_declaration
 | constant_declaration
 | exception_declaration
 | object_declaration
 | record_declaration
 | variable_declaration
 | cursor_spec
 | function_spec
 | procedure_spec
 | call spec
 | PRAGMA RESTRICT_REFERENCES} 
 [{collection_type_definition
  | record_type_definition
  | subtype_definition
  | collection_declaration
  | constant_declaration
  | exception_declaration
  | object_declaration
  | record_declaration
  | variable_declaration
  | cursor_spec
  | function_spec
  | procedure_spec
  | call spec
  | PRAGMA RESTRICT_REFERENCES}]...
END [package_name];