在注册或更改外部例程时使用共享对象文件名指定一个可执行对象文件名的路径
名。
语法
共享对象文件
用法
如果 IFX_EXTEND_ROLE 配置参数设置为 1 或 ON,只有 DBSA 已授予内置
EXTEND 角色的用户才有权使用此段。(无论是否启用 IFX_EXTEND_ROLE,
必须对数据库保留 Resource 特权或 DBA 特权,然后才能创建、删除或更改外
部 UDR。)
DB_LIBRARY_PATH 配置参数设置中包括安全策略授权 DataBlade 模块和 UDR
驻留的每个文件系统。除非缺失 DB_LIBRARY_PATH 或没有设置,否则数据库
服务器无法访问此段指定的文件,除非其路径名以与 DB_LIBRARY_PATH 的值
完全匹配的字符串开头。
例如,如果 "$GBASEDBTDIR/extend" 是 Linux™ 系统上的 DB_LIBRARY_PATH 值
之一,则共享对象文件可以在 $GBASEDBTDIR/extend 文件系统或其子目录中具有
路径名。此目录也是内置 DataBlade 模块所在的文件系统。
指定共享对象文件名的语法取决于该外部例程是按 C 语言还是 Java 语言编写。
以下几节描述了这些外部语言。
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1683
有关出现在 ALTER FUNCTION 、ALTER PROCEDURE 、ALTER ROUTINE、 CREATE
FUNCTION 和 CREATE PROCEDUREF 语句的 EXTERNAL NAME 子句中上下文的更多信
息,请参阅相关的引用,外部例程引用。
C 共享对象文件
要指定 C 共享对象文件的位置,在引用路径名中指定动态载人可执行文件的路径
或把它作为一个变量。
语法:
C 共享对象文件
元素
描述
限制
语法
environment_var
取决于平台的指示符
必须以美元符号($)
开头
标识符
pathname
文件的路径名
请参阅后面的注释
必须符合
操作系统
约定
quote
单引号(')或双引
号('')
开始和结束引号必须
匹配
文字符号
(' 或
'')
symbol
文件的入口点
必须用括号括起来
必须符合
操作系统
约定
variable
取决于平台的指示符
必须以美元符号($)
开头
必须符合
C 语言约
定
下列规则影响路径名和 C 语言中的文件名规范:
文件名(不带路径名)可以指定一个内部函数。
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1684
当 CREATE 或 ALTER 语句运行时,如果路径名和当前目录相关可以省
略句号(. )。
在 UNIX™ 中,绝对路径必须以斜杠(/)符号开头,而且每一个目录名
必须以斜杠(/)符号结尾。
在 Windows™ 中,绝对路径必须以反斜杠(\)符号开头,而且每一个目
录名必须以反斜杠( \ )符号结尾。
路径名结尾处的文件名必须有 .so 文件扩展名并且必须指向共享对象库中
的一个可执行文件。
只在动态可载人的可执行对象文件入口点的名称和用 CREATE
FUNCTION 或 CREATE PROCEDURE 注册的 UDR 名称不同时,使用
symbol。
如果指定一个变量,它必须包含可执行文件的完整路径名。
在引用路径名中可以包含空白字符,如空格或制表符。
Java 共享对象文件
要指定 Java™ 更新对象文件,需要指定 UDR 对应的静态 Java 方法和定义这个
方法的 Java 二进制文件。
Java 共享对象文件:
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1685
元素
描述
限制
语法
class_id
方法实现 UDR 的
Java™ 类
类必须在 Jar 名标识
的 .jar 文件中存在
必须遵守 Java
标识符的规则
java_type
在 Java™ 方法特征
符中参数的 Java 数
据类型
必须在 JDBC 类中定
义或通过 SQL-to-
Java 映射定义
必须遵守 Java
标识符的规则
method_id
实现 UDR 的 Java
方法名
必须在
java_class_name 指
定的 Java 类中存在
必须遵守 Java
标识符的规则
package_id
包含 Java 类的数据
包名
必须存在
必须遵守 Java
标识符的规则
quote
单引号(')或双引
号('')定界符
开始和结束引号必须
匹配
从键盘输入的文
字符号( ' 或
'')
在创建用 Java 语言编写的 UDR 之前,必须用 sqlj.install_jar 过程分配一
个 jar 标识符给外部 jar 文件。(有关更多信息,请参阅 sqlj.install_jar。)在共
享对象文件名中可以包含实现 UDR 的方法的 Java 特征符。
如果不指定 Java 特征符,例程管理器从 CREATE FUNCTION 或
CREATE PROCEDURE 语句中的 SQL 特征符确定隐式 Java 特征符。
它用 JDBC 和 SQL-to-Java 映射把 SQL 数据类型映射到对应的 Java 数
据类型。有关吧用户定义的数据类型映射到 Java 数据类型的信息,请参
阅 sqlj.setUDTextName。
如果指定了 Java 特征符,例程管理使用这个显式 Java 特征符作为要使
用的 Java 方法名。
例如,如果 Java 方法 explosiveReaction( ) 实现 Java UDR
sql_explosive_reaction( )(如 sqlj.install_jar 中所讨论),则它的共享对象文
件名可以是:
course_jar:Chemistry.explosiveReaction
前面的共享对象文件名提供了隐式 Java 特征符。下面的共享对象文件名等价于
一个显式 Java 特征符:
course_jar:Chemistry.explosiveReaction(int)
GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1686