1
create or replace package p is
function f1 return number;
function f2 return number;
procedure p1;
end p;
/
create or replace package body p is
function f1 return number is begin return 1; end;
function f2 return number is begin return 2; end;
procedure p1 is begin null; end;
procedure p2 is begin null; end;
end p;
/
上記の例では、パッケージ外からp2を呼び出すことはできません.f1、f2、またはp1はp2を呼び出すことができます。しかし、もしp1を同じように制限したいのであれば。ユーザーにパッケージプロシージャを呼び出すように制限する
ここでは、パッケージ指定からp1を削除できません。
これはインタビューの質問であり、Googleに試してみましたが、解決策が見つかりませんでした。これが可能かどうかを調べ、そうであればどのようにしてください。
仕様から削除する以外は、どうすれば可能かわかりません。 – OldProgrammer
おそらく、特定のユーザのためだけに実行するために、p1の内部コードを条件付きでラップすることができます: 'procedure p1 is begin(USER = 'ADMIN')then null;終了する。これはp1が呼び出されるのを妨げるものではなく、コードの実行を制限するだけです。 –
彼らはOracle 12C [ホワイトリスト](http://tkyte.blogspot.co.uk/2013/07/12c-whitelists.html)を探していたのでしょうか? –