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];