📌
【PL/SQL】他のパッケージからプロシージャの呼び出し
個人メモです。会社PCで仕事中振り返れるようにあえて公開してます。
気にしないでください。
他のパッケージからプロシージャを呼び出す
PL/SQL
BEGIN
パッケージ名.プロシージャ名(引数1,引数2);
END;
プロシージャが属するパッケージ名を記載。必要に応じてプロシージャに渡す引数を記載。
アクセス権の例:EXECUTE権限
アクセス権は、データベース内で特定の操作を実行するための権限。
EXECUTE権限とは、特定のプロシージャやパッケージを実行するための権限。
データベース内で他のユーザーが作成したプロシージャやパッケージを呼び出すためには、EXECUTE権限が付与されている必要があります。
DB管理者が特定のユーザーに特定のパッケージの権限を付与する場合
GRANT EXECUTE ON パッケージ名 TO user_name;
上記記述で指定されたユーザーはパッケージ名の中にあるプロシージャや関数を実行できる。
例外を使用した他のパッケージから呼び出す際の工夫
他のパッケージのプロシージャを呼び出す際、呼び出すパッケージやプロシージャが存在し、適切なアクセス権を持っていることを確認する必要があるため、もしなかった場合にエラーにならないよう例外も記載しておく。
例
BEGIN
パッケージ名.プロシージャ名(引数1,引数2);
EXCEPTION
WHEN others THEN
dbms_output.put_line('Error: ' || SQLERRM);
END;
例外部分EXCEPTION以下の解説
-
WHEN others THEN
WHEN others
は全てのエラーを捕捉する汎用例外ハンドラー。 -
dbms_output.put_line('Error: ' || SQLERRM);
SQLERRM
はエラーメッセージテキストを返す組み込み関数で、dbms_output.put_line
はそのメッセージを表示するために使用。
上記例外によって、呼び出すパッケージやプロシージャが存在しない、適切なアクセス権を持ってないなどの場合に、コンパイルエラーにならず、エラー画面を表示させます。
Discussion