撤销语句(功能或程序权限)
这种形式的“REVOKE”语句可撤销对用户定义函数、为不同类型生成的转换函数以及存储过程的权限。
REVOKE(功能或程序权限)的语法
- 1 AS LOCATOR 只能为 LOB 数据类型或基于 LOB 数据类型的独特类型指定。
- 2 有关该片段的语法图,请参阅内置类型的语法。
- 3 array-type-name 仅支持编译后的 SQL 标量函数。
撤销(功能或程序权限)说明
- EXECUTE
- 撤销运行已识别用户定义函数、为不同类型生成的转换函数或存储过程的权限。
- function-designator
确定撤销特权的功能。 当前服务器上必须存在该函数,且该函数必须是由CREATE FUNCTION语句定义的函数,或由CREATE TYPE语句生成的转换函数。 函数设计器通过名称、唯一标识函数的函数签名或具体名称来标识 SQL 函数。 更多信息,请参阅功能代号。
如果函数是用表参数定义的(在CREATE FUNCTION语句中指定了LIKE TABLE,表示输入参数之一是转换表),则不能使用函数签名来识别函数。 相反,如果功能名称是唯一的,则使用功能名称来识别功能,或者使用其特定名称。
可以为限定或非限定函数名指定 *。 一个 *(或模式名称.*) 表示模式中所有函数的权限都已撤销。 您(或指定的授予者)必须已将 FUNCTION * 的权限授予所有指定用户(包括指定的 PUBLIC)。 特定程序所授予的特权不受影响。
- 程序 程序名称
- 标识在当前服务器上定义的存储过程。
对于限定或非限定的过程名称 ,可以指定一个*。 一个*(或模式名。*) 表示撤销该架构中所有程序的特权。 您(或指定的授权人)必须已将程序*的权限授予所有已识别用户(包括指定的公众用户)。 特定程序所授予的特权不受影响。
- FROM
- 有关 FROM 子句的说明,请参阅 REVOKE 语句。
- BY
- 关于 BY 子句的描述,请参阅 REVOKE 语句。
- INCLUDING DEPENDENT PRIVILEGES 或者 NOT INCLUDING DEPENDENT PRIVILEGES
- 指定撤销授权ID或角色的特权或权限是否也会导致撤销该用户授予的权限。 默认值基于被撤销的权限和系统参数 REVOKE_DEP_PRIVILEGES:
- 当ACCESSCTRL、DATAACCESS或系统DBADM权限被撤销时, NOT INCLUDING DEPENDENT PRIVILEGES ,且必须在REVOKE语句中指定该子句。
- 当系统参数 REVOKE_DEP_PRIVILEGES 设置为 NO 时, NOT INCLUDING DEPENDENT PRIVILEGES ,如果语句中包含 INCLUDING DEPENDENT PRIVILEGES。
- 否则, INCLUDING DEPENDENT PRIVILEGES ,则该条款必须在REVOKE语句中指定。
- INCLUDING DEPENDENT PRIVILEGES
- 规定撤销授权ID或角色的特权或权限也会导致撤销从属特权。 这意味着用户发放的任何赠金将继续被撤销,直到链中的所有赠金都被撤销。
INCLUDING DEPENDENT PRIVILEGES 如果系统参数 REVOKE_DEP_PRIVILEGES 设置为 NO,则无法指定,这将强制行为不包括相关权限。
- NOT INCLUDING DEPENDENT PRIVILEGES
- 规定撤销授权ID或角色的特权或权限不会导致撤销用户授予的权限。 然而,对于被撤销的特权,所有因特权被撤销而产生的后果均适用。 例如,如果需要被撤销的权限才能成功绑定一个软件包,那么由于软件包所有者失去了这些权限,该软件包将继续无效。 如果用于创建对象的特权被撤销,对象可能会被删除。
NOT INCLUDING DEPENDENT PRIVILEGES 当ACCESSCTRL、DATAACCESS或系统DBADM权限被撤销时,必须指定。
NOT INCLUDING DEPENDENT PRIVILEGES 如果系统参数 REVOKE_DEP_PRIVILEGES 设置为 toYES, ,则无法指定,该参数强制在撤销时包含相关权限。
- RESTRICT
- 如果撤销者拥有以下对象,且没有其他来源的EXECUTE权限,则防止在用户定义的函数或存储过程中撤销EXECUTE权限:
- 一个函数,其源代码来自另一个函数
- 使用该功能的视图
- 使用函数或存储过程的触发器包
- 在检查约束或用户定义的默认子句中使用该函数的表格
- 一个实体化的查询表,其全选功能使用函数
- 扩展索引,使用功能
撤销(功能或程序权限)注意事项
适用于所有撤销声明表格的注意事项,请参阅撤销声明注意事项。
REVOKE(功能或程序权限)示例
REVOKE EXECUTE ON FUNCTION CALC_SALARY FROM JONES; REVOKE EXECUTE ON PROCEDURE VACATION_ACCR FROM PUBLIC; REVOKE EXECUTE ON FUNCTION DEPT_TOTALS
FROM ADMIN_A; REVOKE EXECUTE ON FUNCTION NEW_DEPT_HIRES (INTEGER, CHAR(10))
FROM HR;您也可以将CHAR(10)数据类型编码为CHAR()。
REVOKE EXECUTE ON FUNCTION FIND_EMPDEPT
FROM ROLE ROLE1;