指定の特権がユーザにあるかどうかを確認します。
Synopsis
%CHECKPRIV [GRANT OPTION FOR | ADMIN OPTION FOR] syspriv [,syspriv]

%CHECKPRIV [GRANT OPTION FOR] objpriv ON object
引数
GRANT OPTION FOR オプション — このキーワードは、現在のユーザが指定の特権について WITH GRANT OPTION 特権を持っているかどうか確認することを指定します。このオプションを設定した %CHECKPRIV では、ユーザが指定の特権を持っているかどうかが確認されません
ADMIN OPTION FOR オプション — このキーワードは、現在のユーザが、指定の特権を他のユーザやロールに付与できるかどうか確認することを指定します。このオプションを設定した %CHECKPRIV では、ユーザが指定の特権を持っているかどうかが確認されません
syspriv 1 つのシステム特権です。または、複数のシステム特権をコンマで区切って列挙した一覧です。利用できる syspriv オプションには、%CREATE_FUNCTION、%DROP_FUNCTION、%CREATE_METHOD、%DROP_METHOD、%CREATE_PROCEDURE、%DROP_PROCEDURE、%CREATE_QUERY、%DROP_QUERY、%CREATE_TABLE、%ALTER_TABLE、%DROP_TABLE、%CREATE_VIEW、%ALTER_VIEW、%DROP_VIEW、%CREATE_TRIGGER、および %DROP_TRIGGER の 16 個のオブジェクト定義特権があります。%DB_OBJECT_DEFINITION を指定すれば、この 16 個のオブジェクト定義特権すべてについて確認できます。
objpriv 指定の object に関係するオブジェクト特権です。指定できるオプションは、%ALTER、DELETE、SELECT、INSERT、UPDATE、EXECUTE、および REFERENCES です。
object objpriv の確認対象とするオブジェクトの名前です。
概要
%CHECKPRIV には以下の 2 つの使用方法があります。
ユーザに指定の特権がある場合、%CHECKPRIV は SQLCODE 0 を返し、その特権がない場合は SQLCODE 100 を返します。
埋め込み SQL については、特権が自動的には確認されません。この場合の特権は、ODBC/JDBC、および Dynamic SQL (例えば、システム管理ポータルの [SQL 文の実行] など) を使用して確認します。したがって、埋め込み SQL では、更新作業のように特権を必要とする操作を実行する前に、%CHECKPRIV を呼び出しておく必要があります。
  SET name="fred",age=99
  SET SQLCODE=""
  &sql(%CHECKPRIV UPDATE ON Sample.Person)
  IF SQLCODE=100 {
     WRITE !,"No UPDATE privilege"
     QUIT }
  ELSEIF SQLCODE > 0 {
     WRITE !,"Unexpected SQL error: ",SQLCODE
     QUIT }
  ELSE { 
     WRITE !,"Proceeding with UPDATE" }
  &sql(UPDATE Sample.Person SET Name=:name,Age=:age)
%CHECKPRIV はすぐに作成および実行され、通常一度しか実行されないため、Caché では、ODBC、JDBC、またはダイナミック SQL での %CHECKPRIV にはクエリ・キャッシュは作成されません。
以下の例では、特定のテーブルに対する特定のオブジェクト特権が現在のユーザにあるかどうかを確認します。
%CHECKPRIV UPDATE ON Sample.Person
以下の例では、すべてのテーブルで 3 種類のテーブル操作を実行するシステム特権が現在のユーザにあるかどうかを確認します。
%CHECKPRIV %CREATE_TABLE,%ALTER_TABLE,%DROP_TABLE
以下の例では、16 個のオブジェクトすべての定義特権が現在のユーザにあるかどうかを確認します。返る SQLCODE 値は、16 個のオブジェクトすべてに対する特権があれば 0、1 つでも特権のないオブジェクトがあれば 100 です。
%CHECKPRIV %DB_OBJECT_DEFINITION
以下の例では、現在のユーザが、他のユーザやロールに %CREATE_TABLE 特権を付与できるかどうかを確認します。
%CHECKPRIV ADMIN OPTION FOR %CREATE_TABLE
関連項目