文章
姚 鑫 · 十月 6 阅读大约需 2 分钟

第三十七章 SQL命令 DROP ROLE

第三十七章 SQL命令 DROP ROLE

删除角色

大纲

DROP ROLE role-name

参数

  • role-name - 要删除的角色的名称。名称是一个标识符。角色名称不区分大小写。

描述

DROP ROLE语句删除角色。删除角色时, IRIS会将其从已授予该角色的所有用户和角色中撤消,并将其从数据库中删除。

可以通过调用$SYSTEM.SQL.Security.RoleExists()方法来确定角色是否存在。如果尝试删除不存在(或已被删除)的角色,则DROP ROLE将发出SQLCODE-118错误。

权限

DROP ROLE命令是特权操作。在嵌入式SQL中使用DROP ROLE之前,至少需要满足以下要求之一:
- 必须具有%Admin_Secure:USE权限。
- 该角色的所有者。
- 已被授予具有管理员选项的角色。

否则将导致SQLCODE-99错误(特权冲突)。

使用$SYSTEM.Security.Login()方法分配具有适当权限的用户:

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

必须具有%Service_Login:Use权限才能调用$SYSTEM.Security.Login方法。

示例

下面的嵌入式SQL示例创建名为BkUser的角色,稍后将其删除:

ClassMethod DropRole()
{
    DO $SYSTEM.Security.Login("MyName","SecretPassword")
    &sql(
        CREATE ROLE BkName
    )
    if SQLCODE=-99 {
        w !,"没有创建角色的权限" 
    } else { 
        w !,"创建角色"
    }
    /* Use role */
    &sql(
        DROP ROLE BkName
    )
    if SQLCODE=-99 {
        w !,"没有删除角色的权限" 
    } else { 
        w !,"删除橘色" 
    }
}
00
1 0 0 8
Log in or sign up to continue