- カテゴリ:
コンテキスト関数 (一般)
IS_DATABASE_ROLE_ACTIVATED(SYS_CONTEXT 関数)¶
データベースロールが現在のセッションでアクティブ化されている場合はVARCHAR値 'TRUE' を返します。
構文¶
SYS_CONTEXT(
'SNOWFLAKE$SESSION' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
引数¶
'SNOWFLAKE$SESSION'現在のセッションに関するコンテキスト情報を返す関数を呼び出すことを指定します。
'IS_DATABASE_ROLE_ACTIVATED'IS_DATABASE_ROLE_ACTIVATED 関数を呼び出します。
'database_role'チェックするデータベースロールを指定します。名前は完全修飾でも相対でもかまいません。
戻り値¶
この関数は、次の VARCHAR 値のいずれかを返します。
セッション内にある現在のユーザーのアクティブなプライマリロールまたはセカンダリロールが、指定されたロールの権限を継承する場合は、
'TRUE'を返します。指定されたデータベースロールがユーザーのアクティブなロール階層にない場合や、データベースロールが存在しない場合は
'FALSE'を返します。
この戻り値を BOOLEAN 値 TRUE または FALSE と比較するには、BOOLEAN への戻り値を:ref:キャストします <label-data_type_explicit_casting>。例:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
使用上の注意¶
この関数は、共有テーブルに適用されるガバナンスポリシー(マスキングポリシー、行アクセスポリシー、投影ポリシーなど)ではサポートされていません。共有オブジェクトはコンシューマーのセッション状態にアクセスできません。
完全修飾名を指定しない場合、この関数はデータベースロールのデータベースコンテキストを次のように解決します。
クエリ: セッションデータベース(現在使用中のデータベース)。
データ保護ポリシーの本文: 保護されたテーブルまたはビューを含むデータベース。
共有: コンシューマーアカウントのデータベース。
この関数は決定論的ではないため、マテリアライズドビューの定義では使用できません。
例¶
相対名を使用して、現在のデータベースのデータベースロールを確認します。
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANA... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+
完全修飾名を使用して、別のデータベースのデータベースロールをチェックします。
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB2.READER_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB ... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+