The CREATE PACKAGE statement is used to create or replace the package header for stored procedures.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition does not support this feature.
A package is a collection of related stored procedures, functions, and other program objects stored as a unit in the database. The package header first declares these objects and then specifies the package body that defines them.
Prerequisites
To create or replace a package in your schema, you must have the CREATE PACKAGE system privilege. To create or replace a package in another user's schema, you must have the CREATE ANY PACKAGE system privilege.
Syntax
The syntax of create_package is as follows:
CREATE [ OR REPLACE ]
PACKAGE plsql_package_source
where:
The syntax of
plsql_package_sourceis as follows:[ schema. ] package_name [ sharing_clause ] [ { default_collation_clause | invoker_rights_clause | accessible_by_clause }... ] { IS | AS } package_item_list END [ package_name ] ;The syntax of
package_item_listis as follows:{ type_definition | cursor_declaration | item_declaration | package_function_declaration | package_procedure_declaration } ...The syntax of
package_function_declarationis as follows:function_heading [ accessible_by_clause | determinitic_clause | pipelined_clause | parallel_enable_clause | result_cache_clause ] ;The syntax of
package_procedure_declarationis as follows:procedure_heading [accessible_by_clause] ;
Semantics
| Syntax | Keyword or syntax node | Description |
|---|---|---|
| create_package | OR REPLACE | Recreates the package (if it exists) and then recompiles it. Users who were granted the package privileges before the package was redefined can still access the package without needing to be granted the privileges again. If any function-based indexes depend on the package, the database marks the indexes as DISABLED. |
| plsql_package_source | schema | The schema where the package is located. The default value is the current user's schema. |
| plsql_package_source | package_name | The name of the package to be created. |
| plsql_package_source | package_item_list | Defines each type in the package and declares each cursor and subprogram in the package. Except for polymorphic table functions, each declaration must have a corresponding definition in the package body, and the definitions must match exactly, except for spaces. |
Examples
Create a package named obdemo_pack that contains a record variable obDeptRec, two functions, and a stored procedure.
CREATE OR REPLACE PACKAGE obdemo_pack
IS
obDeptRec obdept%ROWTYPE;
FUNCTION add_obdept(dept_no NUMBER, dept_name VARCHAR2, location VARCHAR2)
RETURN NUMBER;
FUNCTION remove_obdept(dept_no NUMBER)
RETURN NUMBER;
PROCEDURE query_obdept(dept_no IN NUMBER);
END obdemo_pack;
/
