GBASE南大通用技术分享:GBase 8s数据库DROP FUNCTION 语句简介

34 阅读4分钟

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

如果您不知道 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 关键字,则如果数据库服务器在当前数据库中没有找到与 DROPFUNCTION 语句指定的相符合的函数则数据库不采取任何操作(而不是发出错误)。

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

如果您不知道 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 关键字,则如果数据库服务器在当前数据库中没有找到与 DROPFUNCTION 语句指定的相符合的函数则数据库不采取任何操作(而不是发出错误)。