SET ROLE 语句

SET ROLE 语句验证会话的授权标识是否是特定角色的成员。 当将角色授予该授权标识时,授权标识将获取角色中的成员资格,或者将该授权标识授予作为成员的组或角色时,授权标识将获取该角色中的成员资格。

调用

此语句可以嵌入在应用程序中,也可通过动态 SQL 语句来发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。

权限

不需要执行任何操作。

语法

Read syntax diagramSkip visual syntax diagramSET ROLE=role-name

描述

角色名称
指定要验证会话授权标识的成员资格所在的角色。 role-name 必须标识当前服务器上的现有角色 (SQLSTATE 42704)。 如果会话的授权标识不是 role-name的成员,那么将返回错误 (SQLSTATE 42501)。

注意

  • 已授予授权标识的所有角色都用于授权检查。 SET ROLE 语句不会影响哪些角色用于此授权检查。 使用 GRANT ROLE 和 REVOKE ROLE 语句来更改授权标识具有成员资格的角色。

示例

  • 示例 1: 用户 WALID 已被授予角色 EDITOR ,但未被授予角色 AUTHOR。 验证 WALID 是否是 EDITOR 角色的成员。
       SET ROLE EDITOR
  • 示例 2: 验证 WALID 是否不是 AUTHOR 角色的成员。 以下语句返回错误 (SQLSTATE 42501)。
       SET ROLE AUTHOR