参数 | 描述 | 限制 | 语法 |
---|---|---|---|
class_id | 包含实现 UDR 的方法的 Java™ 类 | Java 必须在 jar_id 指定的 JAR 文件中存在。标识符不能超过 255 个字节。 | 特定于语言 |
package_id | 包含 Java 类的包的名称 | package_id.class_id 的完整限定标识符不能超过 255 个字符 | 特定于语言 |
您指定的 JAR ID (即要更改 JAR 文件路径的 JAR 标识和 JAR ID 的解析)必须都已使用 sqlj.install_jar 过程安装过。当调用使用 Java 语言编写的 UDR 时,例程管理器尝试加载 UDR 驻留的 Java 类。此时,它必须解析此 Java 类对其它 Java 类所做的引用。
例程管理隐式解析之前列表中的类型 1 和类型 2。要解析类型 3 的引用,它检查 JAR 文件路径中所有最近调用 sqlj.alter_java_path( ) 指定的 JAR 文件。
如果例程管理器不能解析类引用,它会发出异常。例程管理器在执行类型 1 和类型 2 解析之后检查 JAR 文件路径以进行类引用。
如果希望从 JAR 文件路径指定的 JAR 文件加载 Java™ 类,请确保 Java 类不存在于 JVPCLASSPATH 配置参数中。否则,系统装入程序会首先采用此 Java 类,这可能导致加载不是您期望的类。
EXECUTE PROCEDURE alter_java_path("course_jar", "(professor/*, prof_jar)"); EXECUTE FUNCTION sql_explosive_reaction(10000);
例程管理器尝试加载 Chemistry 类。它使用调用 sqlj.alter_java_path( ) 指定的路径来解析任何类引用。因此,它检查 prof_jar 标识的 JAR 文件的 professor 包中的类。
如果启用了 IFX_EXTEND_ROLE 配置参数(缺省设置),那么只有 DBSA 或持有 EXTEND 角色的用户可以执行 sqlj.alter_java_path( ) 过程。当 IFX_EXTEND_ROLE 被禁用时,任何用户都可以执行 sqlj.alter_java_path( )。(但是不管 IFX_EXTEND_ROLE 如何设置,您必须拥有数据库的 Resource 特权或 DBA 特权,并且还必须拥有 Java 语言的 Usage 特权,才能创建或删除 Java UDR。)