You can use the CREATE PACKAGE statement to create or replace the specification of a program package.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition provides only the MySQL mode.
The package is an encapsulated collection of related stored procedures, functions, and other program objects that are stored as one unit in the database. These objects are first declared in the package specification and then defined in the specified package body.
Prerequisites
To create or replace a program package in your own schema, you must have the CREATE PACKAGE system privilege. To create or replace a program package in the schema of other users, 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
Specifically:
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 | Re-creates this program package (if any) and recompiles it. Before the program package is redefined, users granted the access privilege can still access this program package without the need to obtain the access privilege again. If any function-based index depends on this program package, the database marks this index as DISABLED. |
| plsql_package_source | schema | The name of the schema where the program package is located. The default value is your schema. |
| plsql_package_source | package_name | The name of the program 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 two must exactly match except for spaces. |
Examples
Create a program package named obdemo_pack, which contains the obDeptRec record variable, 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;
/