使用动态SQL语句所需的权限
身份识别需要特定的权限才能发出动态SQL语句。
下表列出了ID,并描述了发布每种类型的SQL语句所需的权限:
| 操作 | 身份或角色 | 需要的特权 |
|---|---|---|
| GRANT | 当前 SQL ID 或角色 | 以下任何一项特权:
|
| REVOKE | 当前 SQL ID 或角色 | 必须拥有被撤销的特权,或拥有SYSCTRL或SYSADM权限。 |
| CREATE,用于非限定对象名称 | 当前 SQL ID 或角色 | 可用的表、数据库或架构权限 |
| 创建对象的限定名称 | ID或角色被指定为所有者 | 适用的表格或数据库权限。 限定符可以是任何ID,如果当前SQL ID或角色(如果处于受信任的环境中,并指定了ROLE AS OBJECT OWNER AND QUALIFIER子句)具有SYSADM、系统DBADM或SYSCTRL权限(如果适用),或者具有数据库的DBADM或DBCTRL权限(如果适用),则无需任何特权。 |
| 如果DYNAMICRULES使用运行行为,则其他动态SQL | 所有主要ID、角色、次要ID和当前SQL ID | 根据声明要求。 不加限定的对象名称由特殊寄存器CURRENT SQLID的值限定。 |
| 如果DYNAMICRULES使用绑定行为,则其他动态SQL | 计划或项目所有者 | 根据声明要求。 DYNAMICRULES 行为决定如何限定不合格的对象名称。 |
| 如果DYNAMICRULES使用其他动态SQL,则定义行为 | 功能或程序所有者 | 根据声明要求。 DYNAMICRULES 行为决定如何限定不合格的对象名称。 |
| 如果DYNAMICRULES使用invoke行为,则使用其他动态SQL | 调用函数、过程或角色的SQL语句的ID | 根据声明要求。 DYNAMICRULES 行为决定如何限定不合格的对象名称。 |