CREATE PACKAGE BODYとは、パッケージ本体を作成するSQL文である。
「警告: パッケージが作成されましたが、コンパイル・エラーがあります。」と表示された場合は、SQL*PlusのSHOW ERRORSコマンドを実行すると、コンパイル・エラーの内容が表示される。
CREATE [OR REPLACE] PACKAGE BODY [schema.]package {IS|AS}
[declare ...]
[BEGIN
body]
END [package];
パッケージを作成するスキーマの名前を指定する。自分のスキーマにパッケージを作成する場合は、スキーマ名の指定は省略できる。
作成するパッケージの名前を指定する。
変数などを宣言する。
パッケージ本体を記述する。
PROCEDURE procedure([param [,param...]]) IS
declare
BEGIN
statements
[EXCEPTION
handlers]
END [procedure];
プロシージャの名前を指定する。
プロシージャの引数を指定する。
プロシージャで使用する変数などの宣言を行う。
プロシージャの処理を記述する。
例外が発生したときに実行する処理を記述する。
FUNCTION function([param [,param...]]) RETURN type IS
declare
BEGIN
statements
[EXCEPTION
handlers]
END [function];
ファンクションの名前を指定する。
ファンクションの引数を指定する。
ファンクションの戻り値のデータ型を指定する。
ファンクションで使用する変数などの宣言を行う。
ファンクションの処理を記述する。
例外が発生したときに実行する処理を記述する。
CREATE OR REPLACE PACKAGE BODY employee IS
PROCEDURE set_ename(
i_empno IN NUMBER,
i_ename IN VARCHAR2
) IS
BEGIN
UPDATE emp SET ename = i_ename WHERE empno = i_empno;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(ERRM);
END;
FUNCTION get_ename(i_empno IN NUMBER) RETURN VARCHAR2 IS
employee_name VARCHAR2(20);
BEGIN
SELECT ename INTO employee_name FROM emp WHERE empno = i_empno;
RETURN employee_name;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(ERRM);
RETURN NULL;
END;
END;