这是完整的错误:
Code : -6502
Message : ORA-06502: PL/SQL: numeric or value error: character string buffer too smallORA-06512: at "MYDATABASE"
这是我在java服务中执行该过程的方法:
public String[] execpross_p_hra_int_population_trim () throws SQLException, Exception {
Connect("DBALIAS");
String SQL = "{call EDD_CONFID.P_HRA_INT_POPULATION_TRIM (?, ?)}";
CallableStatement cs = conn.prepareCall (SQL);
String status[];
status = new String[2];
Integer P_CODEERREUR = 0;
String P_TEXTEERREUR = null;
try {
cs.registerOutParameter(1, java.sql.Types.INTEGER);
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.executeUpdate();
}
catch (SQLException e) {
System.out.println("Erreur SQL : "+e);
}
finally {
P_CODEERREUR = cs.getInt(1);
P_TEXTEERREUR = cs.getString(2);
cs.close();
}
status[0] = P_CODEERREUR.toString();
status[1] = P_TEXTEERREUR;
return status;
}
我正在使用正确的JDBC驱动程序(12.1.0.2.0)
经过大量研究后,这似乎是一个“语言环境”问题。因为我的基地是用法语设置的。我尝试添加本地甚至是Oracle提供的国际化java库。但似乎没有任何效果。
我无法真正调试库存过程,因为我没有这样做,但是当我用SQLDevelopper执行它时,一切看起来都很好。
现在我有一些奇怪的行为,在我的开发环境中,每当我启动服务时,我都会遇到同样的错误,但是几分钟后它就会开始正常运行而没有错误。这怎么可能呢?
所以我的结论到目前为止,要么我需要找到一种方法来使用NLS_LANG设置(我真的不明白如何在我的情况下使用它)或者我的数据库中有一些不兼容的数据。但我不能确定它。
我知道这是一个特定的问题,我不是在寻找直接的解决方案,只要你们能帮助我朝着正确的方向前进?因为我在这里很迷茫。