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