カテゴリ:

コンテキスト関数 (セッションオブジェクト)

IS_ROLE_IN_SESSION

引数で渡されたロール名がセッションでアクティブ化されたロールの1つである場合は、 TRUE を返します(つまり、 CURRENT_ROLE 関数によって返されるロールは指定されたロールの権限を継承)。

アクティブ化されたロールは、 CURRENT_ROLE 階層内の任意のロールにすることができます。ロール階層の詳細については、 アクセス制御の概要 をご参照ください。

TRUE

IS_ROLE_IN_SESSION('ANALYST') が TRUE の場合、ユーザーの CURRENT_ROLE は ANALYST カスタムロールの権限を継承します。したがって、ユーザーの CURRENT_ROLE は、同じロール階層内の ANALYST カスタムロールよりも高い権限ロールです。

FALSE

IS_ROLE_IN_SESSION('ANALYST') が FALSE の場合、ユーザーの CURRENT_ROLE は ANALYST カスタムロールの権限を継承しません。したがって、ユーザーの CURRENT_ROLE は ANALYST カスタムロールよりも低い権限ロールであるか、ユーザーの CURRENT_ROLE と ANALYST カスタムロールは異なるロール階層にあります。

こちらもご参照ください。

IS_OBJECT高度な列レベルのセキュリティトピック

構文

is_role_in_session( '<string_literal>' )

引数

'文字列リテラル'

ロールの名前。

使用上の注意

  • 引数として渡すことができるロール名は1つだけです。

特定のロールがセッションでアクティブ化されているかどうかを確認します。

select is_role_in_session('ANALYST');

------------------------------+
IS_ROLE_IN_SESSION('ANALYST') |
------------------------------+
            TRUE              |
------------------------------+

マスキングポリシーでの関数の使用:

case
  when is_role_in_session('ANALYST') then val
  else '*******'
end;