返回首页

gbase数据、南大通用产品文档:GBase8sDROP FUNCTION 语句

更新日期:2024年09月11日

使用 DROP FUNCTION 语句可从数据库中除去用户定义的函数。该语句是 SQL
ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
function
要删除的用
户定义的函
数的名称
必须存在于数据库中(即已注
册)。如果该名称没有唯一地标
识函数,你必须输入
parameter_type 的一个或多个适
当的值
标识符
parameter_type 参数的数据
类型
数据类型(或数据类型列表)必
须与那些在创建函数时就在
CREATE FUNCTION 语句中指定的
数据类型相同(并且以相同的顺
序指定)
数据类

用法
删除用户定义的函数会从数据库中除去函数的文本和可执行的版本。(请确保在
数据库外保留一个函数文本副本,以防您在删除此函数后需要重建它。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 569
如果您不知道 UDR 是用户定义的函数还是用户定义的过程,则可以通过使用
DROP ROUTINE 语句删除 UDR 。
要使用 DROP FUNCTION 语句,您必须是此用户定义函数的所有者(并持有数
据库上的 Resource 权限)或者具有 DBA 权限。您还必须持有编写该 UDR 的
程序语言的 Usage 权限。要删除外部用户定义的函数,另见 删除外部例程。
您不能使用 DROP ROUTINE 、DROP FUNCTION 或 DROP PROCEDURE 语句
删除受保护的例程。有关受保护例程的更多信息,请参阅 GBase 8s SQL 参考指
南 系统目录表 sysprocedures 的描述。
您无法从相同的 SPL 函数内删除 SPL 函数。
如果函数定义声明了一个指定的名称,则 GBase 8s 可通过它的 specific name
来解析函数,如果在此语句中使用指定的名称,您还必须使用关键字 SPECIFIC,
如下例所示:
DROP SPECIFIC FUNCTION compare_point;
否则,如果 function 名称在数据库中不唯一,则您必须指定足够的
parameter_type 信息来明确名称 。如果使用参数数据类型标识用户定义的函
数,则它们跟在函数名后面,如下例所示:
DROP FUNCTION compare (int, int);
如果数据库服务器不能解析名义模糊的函数名称(该函数名称的特征符与另一函
数的特征符只在未命名的 ROW 类型参数中不同),则数据库服务器返回错误。
(当定义了含义模糊的 function 后,数据库服务器不能预期此错误。)
如果您包含了可选的 IF EXISTS 关键字,则如果数据库服务器在当前数据库中没
有找到与 DROP FUNCTION 语句指定的相符合的函数则数据库不采取任何操作
(而不是发出错误)。
确定函数是否存在
在您尝试删除用户定义函数之前,可以通过查询系统目录来检查此函数是否在数
据库中存在。以下示例中,SELECT 语句从 sysprodures 表中检索标识为
MyFunction 的任何例程:
SELECT * FROM sysprocedures WHERE procname = MyFunction;


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 570
如果此查询返回一行,则名为 MyFunction 的 UDR 注册在当前数据库中。
如果此查询没有返回行,则您不需发出 DROP FUNCTION 语句,但是您可能希
望验证 WHERE 子句指定的名称是否正确,以及您是否连接到正确的数据库。
如果此查询返回多行,则在当前数据库中重载例程 MyFunction ,并且您需要
检查 MyFunction 例程的属性以确定它们中的哪些(如果有)需要通过 DROP
FUNCTION 语句注销。
示例
大多数函数可以使用以下类似的 SQL 语句来删除:
DROP FUNCTION best_month;
然而,如果您有多个相同名称的函数,则通过函数重载,DROP FUNCTION 以及
必须指定函数的特定名称(如果有)或参数列表来唯一标识它。例如,
superstores_demo 数据库有两个使用以下参数创建的 last_contact 函数:
CREATE FUNCTION last_contact(cust_name name_t) ...

CREATE FUNCTION last_contact(c_num INT) ...
要删除第二个函数,使用以下语句:
DROP FUNCTION last_contact(INT);
如果使用指定的名称 last_cname_contact 和 last_cnum_contac 创建了上述函
数,则删除其中的第二个函数,发出以下语句:
DROP SPECIFIC FUNCTION last_cnum_contact;
现有函数的详细信息可以在 sysprocedures 系统目录表中找到,如下所示的
SQL 查询:
SELECT procname, specificname, paramtypes
FROM sysprocedures ;
删除外部函数
以 C 语言或 Java™ 语句编写用户定义的函数(UDF)称为外部函数。外部函数
必须包含指定共享对象文件名的外部例程引用子句。在缺省情况下,只有 DBSA
授予了内置的 EXTEND 角色的用户可以创建或删除外部函数。有关此功能的附

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 571
加信息,请参阅 授予 EXTEND 角色。请参阅 语言级权限 章节以获取 C 语言
或 Java 语言的 USAGE ON LANGUAGE 子句的语法。
要从共享内存中删除 C 语言例程的可执行版本,请调用
IFX_UNLOAD_MODULE 函数。要用另一个例程替换可执行版本的 C 例程,请
调用 IFX_REPLACE_MODULE 函数。这些内置函数都在 UDR 定义例程中有
所描述。

gbase_stmt_reset ............................ 64

在对象资源管理器中,依次展开“服务器”、“数据库”、“表”、“全文索引”,右键点击需要查
看属性的全文索引,选择“属性”,即弹出全文索引属性窗口。

图:全文索引属性

GBase 8s 企业管理器用户手册
南大通用数据技术股份有限公司

36

索引类型
指明了该索引的类型。

表名
该索引所属的表。

数据库
数据库

索引键
全文索引对应的列号。

索引名称
该索引的名称。