CREATE PACKAGE BODY ステートメントで、パッケージ本体を作成します。パッケージ本体には、パッケージ仕様部内で宣言されたすべてのプロシージャーおよび関数がインプリメントされたものに加え、プライベートのタイプ、変数、およびカーソルの宣言が入ります。
>>-CREATE--+------------+--PACKAGE BODY--package-name--+-IS-+---> '-OR REPLACE-' '-AS-' .-------------------------. V | >----+---------------------+-+----------------------------------> '-private-declaration-' .---------------------------------. V | >----+-----------------------------+-+--------------------------> '-| procedure-specification |-' .--------------------------------. V | >----+----------------------------+-+---------------------------> '-| function-specification |-' >--+-------------------------------------+--END---------------->< | .--------------------------. | | V | | '-BEGIN----initialization-statement-+-' procedure-specification |--PROCEDURE--procedure-name--+---------------------+--+-IS-+---> | .-,---------. | '-AS-' | V | | '-(----parameter-+--)-' >--+-----------------------+--BEGIN--statement------------------> '-procedure-declaration-' >--+---------------------------------------------------------------------+--> | .-------------------. .-------------------. | | V | V | | '-EXCEPTION--WHEN----condition--+----+-+--THEN----handler-statement-+-' '-OR-' >--END----------------------------------------------------------| function-specification |--FUNCTION--function-name--+---------------------+-------------> | .-,---------. | | V | | '-(----parameter-+--)-' >--RETURN--return-type--+-IS-+--+----------------------+--------> '-AS-' '-function-declaration-' >--BEGIN--statement---------------------------------------------> >--+---------------------------------------------------------------------+--> | .-------------------. .-------------------. | | V | V | | '-EXCEPTION--WHEN----condition--+----+-+--THEN----handler-statement-+-' '-OR-' >--END----------------------------------------------------------|
これらの条件のいずれも該当しない場合、procedure-name によって新規プライベート・プロシージャーが定義されます。
これらの条件のいずれも該当しない場合、function-name によって新規プライベート関数が定義されます。
CREATE PACKAGE BODY ステートメントを難読化形式でサブミットできます。難読化されたステートメントでは、パッケージ名のみを判読できます。 ステートメントの他の部分は判読できないようにエンコードされますが、データベース・サーバーはその部分をデコードできます。難読化ステートメントの作成は、DBMS_DDL.WRAP 関数を呼び出すことによって行えます。