현재 Oracle에서 Java 저장 프로 시저로 작업 중이며 Java 내에서 연결을 시도 할 때 이상한 동작이 나타납니다. 암호.Oracle 11.2.0.2.0 (64 비트)에서 연결을 시도 할 때 java.lang.ArithmeticException이 발생했습니다.
Java가 jar 파일로 패키징 된 후 loadjava
명령 줄 유틸리티를 사용하여 Oracle에 배치됩니다. 그런 다음 데이터베이스에 package
이 생성되어 지정된 Java 클래스의 각 메소드를 호출 스펙을 통해 PL/SQL 함수에 매핑합니다.
제가 작업하고있는 열 중 일부는 CLOB
입니다. 자바에서 나는이 CLOB
의 값을 추출하려고 시도 String
로 (oracle.sql.CLOB
로 전화 사양에 매핑) :
private static String getStringFromCLOB(CLOB clob) throws SQLException {
long length = clob.length();
return clob.getSubString(1, (int) length);
}
나는 다음과 같은 스택 추적 플러스 * SQL에 표시 얻을이 코드를 실행하면 :
난 그냥Exception
의 메시지가 표시되기 전에
java.lang.ArithmeticException:/by zero
at oracle.jdbc.driver.T2SConnection.<init>(T2SConnection.java:107)
at oracle.jdbc.driver.T2SDriverExtension.getConnection(T2SDriverExtension.java:31)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:481)
at oracle.jdbc.driver.OracleDriver.defaultConnection(OracleDriver.java:505)
at oracle.sql.DatumWithConnection.getPhysicalConnection(DatumWithConnection.java:53)
at oracle.sql.DatumWithConnection.getInternalConnection(DatumWithConnection.java:177)
at oracle.sql.CLOB.getDBAccess(CLOB.java:1383)
at oracle.sql.CLOB.length(CLOB.java:197)
그래서 나는 그래서이 System.out
의 전체 스택 추적을 덤프 수있는 try/catch
과 잘못된 방법의 내용을 감쌌다.
이 작업은 Oracle 11.2.0.1.0 (32 비트)에서 수행했지만 Oracle 11.2.0.2.0 (64 비트)에서는 작동하지 않습니다.
다른 Java 지원 PL/SQL function
도 문제없이 작동했습니다. 실패한 연결을 시도하는 것은 유일한 것입니다.
나는 <ORACLE_HOME>\jdbc\lib
을 보았고 항아리는 동일한 이름이지만이 두 가지 배포판에서는 서로 다른 것처럼 보입니다. (| 1천9백83킬로바이트 1,950킬로바이트)
ojdbc5_g.jar
(3,010킬로바이트 | 3천2백71킬로바이트)ojdbc5.jar
: 디렉토리에있는 항아리 (11.2.0.1.0 크기와 11.2.0.2.0 크기 표시)입니다ojdbc5dms.jar
(2,374킬로바이트 | 2천4백89킬로바이트)ojdbc5dms_g.jar
(3,030킬로바이트 | 3천2백91킬로바이트)ojdbc6.jar
(2,062킬로바이트 | 2천1백2킬로바이트)ojdbc6_g.jar
(3,323킬로바이트 | 3,782킬로바이트)ojdbc6dms.jar
(2,594KB | 2천6백98킬로바이트)ojdbc6dms_g.jar
(3천3백44킬로바이트 | 3천8백5킬로바이트)simplefan.jar
(20킬로바이트 | 20킬로바이트) < - 아마이 항아리의 매니페스트 파일
또한 oracle.jdbc.driver.T2SConnection
클래스는 어디에 있습니까?
도움/안내 매우 감사합니다. 자세한 정보가 필요하면 알려주십시오.
드라이버에서 버그가있는 것 같습니다. oracle에보고하거나 try/catch, ignore ... (또는 둘 다) – bestsss