更改并删除用户定义的 SQL 函数

Vertica 允许具有不同实参类型的多个函数共用相同名称。因此,如果您在未指定参数数据类型的情况下尝试更改或删除 SQL 函数,系统将返回错误消息,以防止删除不正确的函数:

=> DROP FUNCTION myzeroifnull();
ROLLBACK:  Function with specified name and parameters does not exist: myzeroifnull

更改用户定义的 SQL 函数

使用 ALTER FUNCTION(标量) 命令,可以为用户定义的函数分配新名称并将该函数移到其他架构。

在上一个主题中,您创建了名为 myzeroifnull 的 SQL 函数。以下命令可将 myzeroifnull 函数重命名为 zerowhennull

=> ALTER FUNCTION myzeroifnull(x INT) RENAME TO zerowhennull;
ALTER FUNCTION

以下命令可将已重命名的函数移到名为 macros 的新架构中:

=> ALTER FUNCTION zerowhennull(x INT) SET SCHEMA macros;
ALTER FUNCTION

删除 SQL 函数

DROP FUNCTION 命令可从 Vertica 编录中删除 SQL 函数。

与 ALTER FUNCTION 一样,您必须指定参数数据类型,否则系统会返回以下错误消息:

=> DROP FUNCTION zerowhennull();
ROLLBACK:  Function with specified name and parameters does not exist: zerowhennull

指定参数类型:

=> DROP FUNCTION macros.zerowhennull(x INT);
DROP FUNCTION

Vertica 不会检查依赖项,因此,如果删除其他对象(例如视图或其他 SQL 函数)所引用的 SQL 函数,Vertica 会在使用这些对象时(而非删除该函数时)返回错误。

另请参阅