2012-02-07 477 views
0

下面是我写的错误-4304调用DB2 Java存储过程时

public class Sleeper { 

    public static void Sleep(int seconds){ 

     try { 
      Thread.sleep(seconds * 1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

一个Java类,我想这种方式把这个作为一个存储过程:

DROP PROCEDURE [email protected] 

-- echo "ETAPE 2 DE 3 > Suppression puis instllation du JAR"; 
CALL SQLJ.REMOVE_JAR('DEM.SLEEPER_JAR')@ 
CALL SQLJ.REFRESH_CLASSES()@ 
CALL SQLJ.INSTALL_JAR("file:///Sleeper.jar",'DEM.SLEEPER_JAR',0)@ 
CALL SQLJ.REFRESH_CLASSES()@ 

-- echo "ETAPE 2 DE 3 > CREATION DE LA PROCEDURE "; 
CREATE PROCEDURE DEM.SLEEPUTIL (IN NUM INTEGER) 
    COMMIT ON RETURN NO 
    SPECIFIC SLEEPUTIL 
    DYNAMIC RESULT SETS 0 
    DETERMINISTIC 
    LANGUAGE JAVA 
    PARAMETER STYLE JAVA 
    NO DBINFO 
    FENCED 
    THREADSAFE 
    NO SQL 
    PROGRAM TYPE SUB 
    EXTERNAL NAME 'DEM.SLEEPER_JAR:com.desj.visa.db.procedures.Sleeper!Sleep' 

而且我一再得到这个错误:

14:54:00 [CALL - 0 row(s), 0.032 secs] [Error Code: -4304, SQL State: 42724] DB2 SQL Error: SQLCODE=-4304, SQLSTATE=42724, SQLERRMC=DEM.SLEEPUTIL;SLEEPUTIL;/db2/db2d095/sqllib/function/jar/DEM/SLEEPER_J, DRIVER=4.3.85 
CALL DEM.SLEEPUTIL(3); 
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.032/0.000 sec [0 successful, 0 warnings, 1 errors] 

这是什么问题?

回答

2

我找到了。

该问题与安装在服务器上的Java版本有关。

服务器有Java 1.5,我部署的代码已编译为1.6。

所以我重新编译一切到1.5并部署它。

现在一切正常,所以你们有一个关于如何在DB2上部署Java存储过程的好例子。

干杯。

+0

你应该选择这个作为答案。 – 2012-03-02 13:52:39