📌

【PL/SQL】他のパッケージからプロシージャの呼び出し

2024/10/20に公開

個人メモです。会社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