具有setBigDecimal参数的Java preparedStatement引发ORA-03115

时间:2010-02-19 21:58:54

标签: java oracle prepared-statement

问题是:我正在为包含此字段(以及其他字段)的表中的查询设置prepareStatement:

TABLE1_RSPN NUMBER(8,0)
TABLE1_AFDV NUMBER(8,0)
TABLE1_VALUE    NUMBER(17,2)
TABLE1_NOTE VARCHAR2(255 BYTE)
TABLE1_USR  VARCHAR2(20 BYTE)

...

尝试将一些信息输入我的Java应用程序,我设置了一个preparedStatement,它引发了Oracle异常 ORA-03115不支持的网络数据类型或表示。

相关的Java代码是:

sentSQL = "SELECT TABLE1.*, TABLE2.CIAS FROM TABLE1, TABLE2 WHERE TABLE1_RSPN = ?" +
" AND TABLE2_AFDV = TABLE1_AFDV";
ps = con.prepareStatement(sentSQL);
ps.setBigDecimal(1, dto.getCodResponsability());
rs = ps.executeQuery(sentSQL);

CodResponsability是BigDecimal。我也尝试过Double和Long,没有任何快乐。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

这一行可能错了:

rs = ps.executeQuery(sentSQL);

这实际上调用了Statement's executeQuery并忽略了你绑定的变量。

应该是

rs = ps.executeQuery();