Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
修改函数。
ALTER FUNCTION [ owner.]function-name function-definition
function-definition:CREATE FUNCTION 语法
ALTER FUNCTION [ owner.]function-name SET HIDDEN
ALTER FUNCTION [ owner.]function-name RECOMPILE
必须在 ALTER FUNCTION 语句中包括整个新函数。
语法 1 除第一个单词不同外,ALTER FUNCTION 语句的语法与 CREATE FUNCTION 语句的语法相同。
使用 ALTER FUNCTION,函数的现有特权会保持不变。相反,如果执行 DROP FUNCTION,紧接着执行 CREATE FUNCTION,则会重新指派执行特权。
语法 2 使用 SET HIDDEN 对关联函数的定义进行模糊处理,使之不可读。可以卸载此函数,然后将其重装到其它数据库中。
如果使用 SET HIDDEN,则使用调试程序进行调试不会显示函数定义,也无法通过过程分析获得函数定义。
此设置是不可逆的。强烈建议将原始函数定义保留在数据库之外。
语法 3 使用 RECOMPILE 语法重新编译用户定义的 SQL 函数。当重新编译函数时,存储在目录中的定义被重新分析,其语法也被验证。重新编译没有更改函数的保留源。重新编译函数时,由 SET HIDDEN 子句模糊处理过的定义仍是模糊形式,仍不可读取。
您必须是函数的所有者,或者具有以下其中一种特权:
要使函数成为外部函数,必须拥有 CREATE EXTERNAL REFERENCE 系统特权。
自动提交。
SQL/2008 服务商扩充。ALTER FUNCTION 是 SQL/2008 标准的可选 SQL 语言功能 F381。但是,在 SQL 标准中,ALTER FUNCTION 不能用于重新定义 SQL 持久存储模块 (PSM) 函数定义。SQL/2008 不包括对 SET HIDDEN 或 RECOMPILE 的支持。
在此示例中,创建并更改了 MyFunction。SET HIDDEN 子句对函数定义进行模糊处理,使其不可读。要运行此示例,还必须拥有 CREATE PROCEDURE 系统特权,因为将会先创建函数,然后再对其进行更改。
CREATE FUNCTION MyFunction( firstname CHAR(30), lastname CHAR(30) ) RETURNS CHAR(61) BEGIN DECLARE name CHAR(61); SET name = firstname || ' ' || lastname; RETURN (name); ALTER FUNCTION MyFunction SET HIDDEN; END;