CREATE PACKAGE ステートメントは、ストアドプロシージャパッケージのパッケージヘッダーを作成または置き換えるために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
このプログラムパッケージは、関連するストアドプロシージャ、関数、およびその他のプログラムオブジェクト(データベース内に単一のユニットとして格納されている)のカプセル化された集合です。パッケージヘッダーではこれらのオブジェクトが宣言され、その後に指定されるパッケージ本体でこれらのオブジェクトが定義されます。
前提条件
スキーマ内でプログラムパッケージを作成または置き換えるには、CREATE PACKAGE のシステム権限が必要です。他のユーザーのスキーマ内でプログラムパッケージを作成または置き換えるには、CREATE ANY PACKAGE のシステム権限が必要です。
構文
create_package の構文は次のとおりです:
CREATE [ OR REPLACE ]
PACKAGE plsql_package_source
ここで:
plsql_package_sourceの構文は次のとおりです:[ schema. ] package_name [ sharing_clause ] [ { default_collation_clause | invoker_rights_clause | accessible_by_clause }... ] { IS | AS } package_item_list END [ package_name ] ;package_item_listの構文は次のとおりです:{ type_definition | cursor_declaration | item_declaration | package_function_declaration | package_procedure_declaration } ...package_function_declarationの構文は次のとおりです:function_heading [ accessible_by_clause | determinitic_clause | pipelined_clause | parallel_enable_clause | result_cache_clause ] ;package_procedure_declarationの構文は次のとおりです:procedure_heading [accessible_by_clause] ;
セマンティクス
| 構文 | キーワードまたは構文ノード | 説明 |
|---|---|---|
| create_package | OR REPLACE | そのパッケージを再作成し(存在する場合)、再コンパイルします。パッケージを再定義する前にそのパッケージに権限が付与されたユーザーは、再度権限を取得することなく引き続きそのパッケージにアクセスできます。関数ベースのインデックスがこのパッケージに依存している場合、データベースはインデックスをDISABLEDとしてマークします。 |
| plsql_package_source | schema | そのパッケージが属するスキーマ名。デフォルト値は現在のユーザーのスキーマです。 |
| plsql_package_source | package_name | 作成するパッケージ名。 |
| plsql_package_source | package_item_list | パッケージ内の各型を定義し、パッケージ内の各カーソルとサブルーチンを宣言します。ポリモーフィックなテーブル関数を除き、各宣言にはパッケージ本体に対応する定義があり、スペースを除いて逐語一致する必要があります。 |
例
プログラムパッケージ obdemo_pack を作成します。このパッケージには、変数 obDeptRec、関数2つ、ストアドプロシージャ1つが含まれます。
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;
/