REVOKE (パッケージ特権) ステートメント

この形式の REVOKE ステートメントは、 パッケージに対する CONTROL、BIND、および EXECUTE 特権を取り消します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
  • 参照されるパッケージに対する CONTROL 特権
  • パッケージが含まれるスキーマに対するスキーマ ACCESSCTRL
  • ACCESSCTRL または SECADM 権限

CONTROL 特権を取り消すためには、ACCESSCTRL または SECADM 権限、あるいはパッケージが含まれるスキーマに対するスキーマ ACCESSCTRL 権限が必要です。

構文

構文図を読む構文図をスキップするREVOKE,BINDCONTROLEXECUTE1ONPACKAGE2 package-name FROM ,USERGROUPROLEauthorization-namePUBLIC BY ALL
注:
  • 1 EXECUTE の同義語として RUN を使用できます。
  • 2 PACKAGE の同義語として PROGRAM を使用できます。

説明

BIND
指定されたパッケージに対する BIND または REBIND を実行する特権か、または指定されたパッケージの新しいバージョンを追加する特権を取り消します。

CONTROL 特権も取り消すのでない限り、 パッケージに対する CONTROL 特権を与えられている authorization-name から BIND 特権を取り消すことはできません。

CONTROL
パッケージをドロップする特権、および他のユーザーに対してパッケージの特権を拡張する特権を取り消します。

CONTROL を取り消しても、他のパッケージ特権は取り消されません。

EXECUTE
パッケージを実行する特権を取り消します。

CONTROL 特権も取り消さない限り、 パッケージに対する CONTROL 特権を与えられている authorization-name から EXECUTE 特権を取り消すことはできません。

ON PACKAGE package-name
特権を取り消す対象のパッケージの名前を指定します。 パッケージ特権の取り消しは、すべてのバージョンのパッケージに適用されます。
FROM
特権を誰から取り消すかを指定します。
USER
authorization-name がユーザーであることを指定します。
GROUP
authorization-name がグループ名であることを指定します。
ROLE
authorization-name がロール名であることを指定します。
authorization-name,...
1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。

この許可 ID のリストに、このステートメントを発行するユーザーの許可 ID を含めることはできません (SQLSTATE 42502)。

PUBLIC
PUBLIC から特権を取り消します。
BY ALL
指定された個々の特権を、その付与者にかかわらず、 それらの特権を明示的に付与されたユーザーのうち指定された人から取り消します。 これがデフォルトの動作です。

規則

  • 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
    • 被認可者が authorization-name である SYSCAT.PACKAGEAUTH カタログ・ビュー内の指定されたオブジェクトのすべての行について、以下が該当します。
      • すべての行の GRANTEETYPE が「U」の場合、USER であると見なされます。
      • すべての行の GRANTEETYPE が「G」の場合、GROUP であると見なされます。
      • すべての行の GRANTEETYPE が「R」の場合、ROLE であると見なされます。
      • すべての行の GRANTEETYPE の値が同じでない場合、エラーが戻されます (SQLSTATE 56092)。

  • 特定の特権の取り消しにより、アクションを実行する権限が取り消されるとは限りません。 PUBLIC、グループ、またはロールが他の特権を持っている場合、またはユーザーがパッケージのスキーマに対する ALTERIN または SCHEMAADM などの特権を持っている場合には、ユーザーは作業を続行できます。

  • 例 1: PUBLIC から、パッケージ CORPDATA.PKGA に対する EXECUTE 権限を取り消します。
       REVOKE EXECUTE
         ON PACKAGE CORPDATA.PKGA
         FROM PUBLIC
  • 例 2: ユーザー FRANK および PUBLIC から、 RRSP_PKG パッケージに対する CONTROL 権限を取り消します。
       REVOKE CONTROL
         ON PACKAGE RRSP_PKG
         FROM USER FRANK, PUBLIC