GRANT语句(函数或过程权限)
GRANT语句的这种形式授予用户定义的函数、为不同类型生成的转换函数、数组类型和存储过程的权限。
GRANT(功能或程序权限)的语法
- 1 AS LOCATOR只能指定为LOB数据类型或基于LOB数据类型的不同类型。
- 2 有关该片段的语法图,请参阅内置类型的语法。
- 3 array-type-name 仅支持编译后的 SQL 标量函数。
GRANT(功能或程序权限)描述
- EXECUTE
- 授予运行已识别用户定义函数、为不同类型生成的转换函数或存储过程的权限。
- function-designator
标识授予特权的功能。 当前服务器上必须存在该函数,且该函数必须是由CREATE FUNCTION语句定义的函数,或由CREATE TYPE语句生成的转换函数。 可通过名称、函数签名或特定名称来识别函数。 函数设计器通过名称、唯一标识函数的函数签名或具体名称来标识 SQL 函数。 更多信息,请参阅功能代号。
对于非限定函数名,可以使用星号(*)进行指定。 该函数可以被标识为限定或非限定函数名。 例如,*表示该权限适用于默认模式中的所有功能,包括当前不存在的功能。 模式名称.* 表示该权限适用于指定架构中的所有功能,包括当前不存在的功能。 如果使用*或模式名称 ,则需要SYSADM权限 被指定。 指定星号不会影响已授予某个函数的任何EXECUTE权限。
如果函数是用表参数定义的(在CREATE FUNCTION语句中指定了 LIKE TABLE name AS LOCATOR子句 ,以指示输入参数之一是转换表),则函数签名不能用于唯一标识函数。 请使用其他语法变体之一来识别函数,如果函数名称是唯一的,则使用函数名称,否则使用特定名称。
- 程序 程序名称
标识在当前服务器上定义的存储过程。 名称(包括隐式或显式模式名称)必须标识当前服务器上存在的存储过程。
对于非限定性程序名称,可以使用星号(*)。 该过程可以被标识为合格或不合格的过程名称。 例如,*表示该权限适用于默认架构中的所有程序,包括当前不存在的程序。 模式名称.* 表示该权限适用于指定架构中的所有程序,包括当前不存在的程序。 如果使用*或模式名称 ,则需要SYSADM权限 被指定。 指定星号不会影响已经授予某个过程的任何EXECUTE权限。
- TO
- 请参阅 GRANT语句 ,了解TO子句的说明。
- WITH GRANT OPTION
- 关于WITH GRANT OPTION子句的描述,请参阅 GRANT语句。
GRANT(函数或过程权限)示例
将函数 CALC_SALARY 的 EXECUTE 权限授予用户 JONES。 假定该模式中只有一个名为 CALC_SALARY 的函数。
GRANT EXECUTE ON FUNCTION CALC_SALARY TO JONES;- 向当前服务器上的所有用户授予存储过程 VACATION_ACCR 的 EXECUTE 权限。
GRANT EXECUTE ON PROCEDURE VACATION_ACCR TO PUBLIC; 将 DEPT_TOTALS 功能的 EXECUTE 权限授予行政助理,并允许助理将此功能的 EXECUTE 权限授予其他人。 该函数具有特定名称 DEPT85_TOT。 假设模式中有一个以上的名为DEPT_TOTALS的函数。
GRANT EXECUTE ON SPECIFIC FUNCTION DEPT85_TOT TO ADMIN_A WITH GRANT OPTION;将函数 NEW_DEPT_HIRES 的 EXECUTE 权限授予 HR(人力资源部)。 该函数有两个输入参数,数据类型分别为INTEGER和CHAR(10)。 假设模式中有一个以上的函数名为NEW_DEPT_HIRES。
GRANT EXECUTE ON FUNCTION NEW_DEPT_HIRES (INTEGER, CHAR(10)) TO HR;您也可以将CHAR(10)数据类型编码为CHAR()。
授予角色 FIND_EMPDEPT 函数的 EXECUTE 权限 ROLE1:
GRANT EXECUTE ON FUNCTION FIND_EMPDEPT TO ROLE ROLE1;
