需求是从plsql调用java方法,我可以通过loadjava命令实现它。这我下面的步骤是:如何从PLSQL中调用java方法(这是在java包内)
第1步:创建Java类/ jar文件,并将其放置在UNIX盒
第2步:加载Java类/罐到数据库中,我可以看到一个新的对象在ALL_OBJCETS表与对象类型作为JAVA CLASS
步骤3:发布功能:使用Java静态方法创建的功能/ PROC
步骤4:执行该功能的/ proc。
它对我来说工作正常,但是当java类定义在java包中时,我面临的挑战是这样的。例如: 类文件是:
==========================
package emrsn.com;
public class DBTEST {
public static String callMe(String input){
return input;
}
}
==== ====================
现在,当我上传数据库中的上述java代码(类文件)时,我可以看到对象名称是“emrsn \ com \ DBTEST“,而不是ALL_OBJECTS表中的”DBTEST“,状态为INVALID。 当对象名称类似emrsn \ DBTEST时,我甚至无法重新编译数据库中的类文件(使用ALTER JAVA CLASS obj_name RESOLVE)。
请让他们知道是否有任何其他具体的方式来引用这种类型的Java类文件在数据库中,当它打包成Java。 您可以让我知道如何在创建函数或重新编译此对象时使用这些JAVA类对象(当它是emrsn/com/DBTEST时)。如前所述,我无法重新编译它们以查看确切的错误。
ALTER JAVA CLASS COM/emrsn/DBTEST RESOLVE
获得以下错误
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 - "missing or invalid option"
*Cause:
如果我使用ALTER JAVA CLASS DBTEST解决的,它说没有找到对象。让我知道我可以如何引用这些对象。
谢谢!它的工作.. – Anonymous
不客气! –
在创建功能时,是否需要使用如下代码: ============================ CREATE OR REPLACE FUNCTION DBTEST_FUNC (P_IN VARCHAR2)RETURN VARCHAR2 AS LANGUAGE JAVA NAME'emrsn/com/DBTEST.callMe(java.lang.String)return java.lang。串'; 如果我这样做,它的运行时错误: ============================== *原因:An尝试在Java类中执行不存在的方法。 或者在这里我也需要使用双引号。 感谢您的及时回应。 – Anonymous