Kategorien:

Kontextfunktionen

CURRENT_AVAILABLE_ROLES

Gibt eine Liste aller dem aktuellen Benutzer auf Kontoebene zugewiesenen Rollen enthält. Die Liste enthält alle Rollen, die dem Benutzer direkt zugewiesen sind, sowie alle Kontorollen, die dieser Rollen in der Hierarchie untergeordnet sind.

Siehe auch:

CURRENT_ROLE, CURRENT_SECONDARY_ROLES, IS_ROLE_IN_SESSION

Syntax

CURRENT_AVAILABLE_ROLES()

Argumente

Keine.

Rückgabewerte

Gibt eine Zeichenfolge (VARCHAR) zurück, die eine JSON-kodierte Liste der verfügbaren Rollen auf Kontoebene ist. Der zurückgegebene Wert kann an die Funktion PARSE_JSON übergeben werden, um einen VARIANT-Wert zu erhalten, der eine Liste aller verfügbaren Rollen enthält.

Nutzungshinweise

  • This function returns a list of account-level roles only when queried by a user. This function is not supported in service contexts that don’t have an active user. For example, tasks are executed by a system service that is not associated with a user. Thus, when this function is queried within a task, it returns an empty list ([]).

  • Diese Funktion nicht die Klasse Namen von Datenbankrollen, Anwendungsrollen oder Rollen von Klasseninstanzen zurück.

  • Diese Funktion berücksichtigt keine Rollenaktivierungen in einer Sitzung.

    Wenn diese Funktion beispielsweise in den Bedingungen einer Maskierungsrichtlinie oder einer Zeilenzugriffsrichtlinie angegeben wird, könnte die Richtlinie den Zugriff unbeabsichtigt einschränken.

    Wenn Rollenaktivierung und Rollenhierarchie in den Richtlinienbedingungen erforderlich sind, verwenden Sie IS_ROLE_IN_SESSION.

Beispiele

Rufen Sie die Liste der dem aktuellen Benutzer zugewiesenen Rollen ab:

SELECT CURRENT_AVAILABLE_ROLES();

+----------------------------------------------------------+
| ROW | CURRENT_AVAILABLE_ROLES()                          |
+-----+----------------------------------------------------+
|  1  | [ "PUBLIC", "ANALYST", "DATA_ADMIN", "DATA_USER" ] |
+-----+----------------------------------------------------+

Verwenden Sie die Funktion PARSE_JSON, um einen VARIANT-Wert zurückzugeben, und die Funktion FLATTEN, um eine einzelne Zeile für jede Rolle zu erhalten:

SELECT INDEX,VALUE,THIS FROM TABLE(FLATTEN(input => PARSE_JSON(CURRENT_AVAILABLE_ROLES())));

+-----+-------+------------------------+---------------------------+
| ROW | INDEX | VALUE                  | THIS                      |
+-----+-------+------------------------+---------------------------+
|   1 |     0 | "PUBLIC"               | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   2 |     1 | "ANALYST"              | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   3 |     2 | "DATA_ADMIN"           | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   4 |     3 | "DATA_USER"            | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+