VERIFY_GROUP_FOR_USER 标量函数

VERIFY_GROUP_FOR_USER 函数返回一个值,该值指示与由 SESSION_USER 专用寄存器标识的授权标识相关联的任何组是否位于由 group-name-expression 参数列表指定的组名称中。

读取语法图跳过可视语法图VERIFY_GROUP_FOR_USER(SESSION_USER , group-name-expression )

该模式是 SYSIBM。 不能将函数名指定为限定名。

group-name-expression
用于指定授权名称的表达式 (SQLSTATE 42815)。 未验证当前服务器上是否存在授权名称。 group-name-expression 必须返回非 LOB 的内置字符串数据类型或图形字符串数据类型 (SQLSTATE 42815)。 该字符串的内容不会转换为大写,并且不会左对齐。

该函数的结果为整数。 结果不能为空。 如果与 SESSION_USER 专用寄存器标识的授权标识相关联的任何组都位于 group-name-expression 参数列表中,那么结果为 1。 否则,结果为 0。

示例 1

银行的柜员只能从他们所在的分行访问客户。 所有柜员都是 TELLER 组中的成员。 行许可权由具有 SECADM 权限的用户创建,以强制执行此规则。
CREATE PERMISSION TELLER_ROW_ACCESS ON CUSTOMER
  FOR ROWS WHERE VERIFY_GROUP_FOR_USER(SESSION_USER,'TELLER') = 1 AND
      BRANCH = (SELECT HOME_BRANCH FROM INTERNAL_INFO
          WHERE EMP_ID = USER)
ENFORCED FOR ALL ACCESS
ENABLE

示例 2

对于用户是否可以看到该行的判断取决于被保护表的 ACCESS_ROLE 列中的角色名称。 行许可权由具有 SECADM 权限的用户创建,以检查会话用户是否使用此角色。

CREATE PERMISSION ROLEACCESS ON CUSTOMER
FOR ROWS WHERE ( VERIFY_GROUP_FOR_USER(SESSION_USER, ACCESS_ROLE ) = 1 )
ENFORCED FOR ALL ACCESS
ENABLE