IFX_REPLACE_MODULE 函数将使用 C 语言编写的 UDR 的加载共享对象文件替换为具有不同名称或位置的新版本。如果 IFX_EXTEND_ROLE
配置参数设置为
'On' 或
1,则使用此功能的授权仅对数据库服务器管理员(DBSA)和 DBSA 已授予 EXTEND 角色的用户可用。
参数 |
描述 |
限制 |
语法 |
new_module |
要替换 old_module 指定的共享对象文件的新共享对象文件的完整路径名
|
共享对象文件必须与指定的路径名一起存在,其长度不能超过 255 个字节 |
用引号括起的字符串 |
old_module |
要用 new_module 指定共享对象文件替换的共享对象文件的完整路径名
|
共享对象文件必须与指定的路径名一起存在,其长度不能超过 255 个字节 |
用引号括起的字符串 |
IFX_REPLACE_MODULE 函数是 DBA 特权函数,它返回的整数值表示共享对象文件替换操作的状态:
不要使用
IFX_REPLACE_MODULE 函数重载相同名称的模块。如果发送到
IFX_REPLACE_MODULE
的旧的和新的模块的全名一样,则会发生预期外的结果。
IFX_REPLACE_MODULE 完成执行后,数据库服务器会老化 old_module
共享对象文件;即,IFX_REPLACE_MODULE 函数之后的所有语句将使用 new_module 共享对象文件中的
UDR,并且当使用它的任何语句完成是,旧模块将会被卸载。因此,在短时间内,old_module 和 new_module
共享对象文件都可以驻留在内存中。如果此老化行为是不受欢迎的,请使用 IFX_UNLOAD_MODULE 函数完全卸载共享对象文件。
在 UNIX™ 上,例如,假设您希望替换
circle.so 共享库,它包含以 C 语言编写的
UDR。如果此库的旧版本驻留在
/usr/apps/opaque_types 目录,新版本在
/usr/apps/shared_libs 目录中,则使用下列
EXECUTE FUNCTION 语句执行
IFX_REPLACE_MODULE 函数:
EXECUTE FUNCTION ifx_replace_module(
"/usr/apps/opaque_types/circle.so",
"/usr/apps/shared_libs/circle.so", "C");
在 Windows™ 上,例如,假设您希望替换
circle.dll 动态链接库,其包含 C
UDR。如果此库的旧版本驻留在 C:
\usr\apps\opaque_types 目录,新版本在 C:
\usr\apps\DLLs 目录,则使用下列
EXECUTE FUNCTION 语句执行
IFX_REPLACE_MODULE
函数:
EXECUTE FUNCTION ifx_replace_module(
"C:\usr\apps\opaque_types\circle.dll",
"C:\usr\apps\DLLs\circle.dll", "C");
要在 GBase 8s ESQL/C 应用程序中执行
IFX_REPLACE_MODULE 函数,您必须将此函数与游标相关联。
有关如何使用 IFX_REPLACE_MODULE 替换共享对象文件的更多信息,请参阅 GBase 8s 用户定义的例程和数据类型开发者指南
中如何设计 UDR 的章节。有关如何使用
IFX_UNLOAD_MODULE 函数的信息,请参阅 IFX_UNLOAD_MODULE 函数 一节。