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