- Catégories :
Fonctions contextuelles (général)
IS_DATABASE_ROLE_ACTIVATED (fonction SYS_CONTEXT)¶
Renvoie la valeur VARCHAR 'TRUE' si un rôle de base de données est activé dans la session en cours.
Syntaxe¶
SYS_CONTEXT(
'SNOWFLAKE$SESSION' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
Arguments¶
'SNOWFLAKE$SESSION'Spécifie que vous voulez appeler une fonction pour renvoyer des informations de contexte sur la session en cours.
'IS_DATABASE_ROLE_ACTIVATED'Appelle la fonction IS_DATABASE_ROLE_ACTIVATED.
'database_role'Spécifie le rôle de base de données à vérifier. Le nom peut être complet ou relatif.
Renvoie¶
La fonction renvoie l’une des valeurs VARCHAR suivantes :
'TRUE'si le rôle principal actif de l’utilisateur actuel ou les rôles secondaires de la session héritent des privilèges du rôle de base de données spécifié.'FALSE'si le rôle de base de données spécifié ne figure pas dans la hiérarchie des rôles actifs de l’utilisateur, ou si le rôle de base de données n’existe pas.
Pour comparer cette valeur de retour à la valeur BOOLEAN TRUE ou FALSE, définissez la valeur de retour sur BOOLEAN. Par exemple :
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
Notes sur l’utilisation¶
Cette fonction n’est pas prise en charge dans les politiques de gouvernance (telles que les politiques de masquage, les politiques d’accès aux lignes ou les politiques de projection) appliquées aux tables partagées. Les objets partagés ne peuvent pas accéder à l’état de session du consommateur.
Si vous ne spécifiez pas de nom complet, la fonction résout le contexte de base de données du rôle de base de données comme suit :
Requêtes : base de données de la session (la base de données actuellement utilisée).
Corps d’une politique de protection des données : base de données contenant la table ou la vue protégée.
Partage : base de données dans le compte du consommateur.
Cette fonction ne peut pas être utilisée dans les définitions de vues matérialisées, car la fonction n’est pas déterministe.
Exemples¶
Vérifier un rôle de base de données dans la base de données actuelle à l’aide d’un nom relatif :
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANA... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+
Vérifier un rôle de base de données dans une autre base de données à l’aide d’un nom complet :
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB2.READER_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB ... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+