参考资料:
http://xiaobo.iteye.com/blog/44466
创建存储过程返回游标集
获得Connection调用prepareCall方法 报如下错误
java.sql.SQLException: 类型长度大于最大值
oracle.jdbc.OracleCallableStatement csmt = null;
csmt = (oracle.jdbc.OracleCallableStatement)conn.prepareCall("{call t(?,?,?)}");
csmt.setString(1,'');
csmt.setString(2,'');
csmt.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);
csmt.execute();
ResultSet rs = csmt.getCursor(3);
如下异常:
java.sql.SQLException: 类型长度大于最大值
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:884)
at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2230)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB4(T4CMAREngine.java:1146)
at oracle.jdbc.driver.T4CMAREngine.unmarshalDALC(T4CMAREngine.java:2097)
at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:127)
at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:125)
at oracle.jdbc.driver.T4CTTIdcb.receiveFromRefCursor(T4CTTIdcb.java:103)
at oracle.jdbc.driver.T4CResultSetAccessor.unmarshalOneRow(T4CResultSetAccessor.java:165)
at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:787)
at oracle.jdbc.driver.T4CTTIrxd.unmarshal(T4CTTIrxd.java:704)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:526)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:179)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:782)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1027)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2887)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:2978)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4102)
at getConnection.TestProcedure.main(TestProcedure.java:37)
java.sql.SQLException: 违反协议
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:884)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:132)
at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:384)
at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1035)
at getConnection.TestProcedure.closeConn(TestProcedure.java:70)
at getConnection.TestProcedure.main(TestProcedure.java:47)
这种现象很可能是驱动版本太低导致(首先保证你的存储过程无问题,java书写方式正确),
后来改成版本更改的java ORCLE驱动 问题立即解决(换成ora9.2.0.3-jdk1.4.jar)
主要原因是classes12.jar 驱动的BUG所致,版本不支持,不支持oralce10g的某些特性,需要及时更新最新的oracle驱动 jar包,这只是一种很有可能存在的问题一个方面。
oracle中jdbc驱动包的说明
http://junsansi.itpub.net/post/29894/279694
学习Oracle数据库的常用网址
http://www.weste.net/html/200408/20040824QBI095416.html
oracle官网技术资料
http://www.oracle.com/technology/global/cn/index.html
附件中有一个连接示例及各相关驱动包
分享到:
相关推荐
我数据库连接已经成功 。 此资源包含 ojdbc14.jar , 适合任何版本的Oracle数据库
java语言连接oracle数据库的驱动文件
Oracle连接数据库驱动jar,无毒、无马、无插件请放心使用,如有不会请M QQ:11083269.
classes12.jar为oracle数据库所需要的驱动JAR
Oracle-classes14.jar.jar.rar
oracle架包 ojdbc14.jar classes12.jar
oracle classes12 CLOB ..........................................................
官网下载的 19.3驱动 需要请自行下载,oracle 19c驱动 ojdbc8.jar orai18n.jar。 其他的标记的太高了,所以自行下载了。
ORACLE中的class12.jar驱动文件,大家一起分享吧。
classes12.jar、java连接oracle11g所用jar包,尽情享用
oracle驱动ojdbc14.jar oracle驱动ojdbc14.jaroracle驱动ojdbc14.jaroracle驱动ojdbc14.jaroracle驱动ojdbc14.jaroracle驱动ojdbc14.jaroracle驱动ojdbc14.jar
racle10gjdbc驱动是一款的数据库驱动软件。大家在使用racle10gjdbc程序之前需要在电脑端安装这个驱动,...驱动介绍racle10gjdbc驱动程序,运用在java连接oracle10g。oracle10gjdbc驱动包存放位置为E:\orac,欢迎下载体验
最近开发需要数据库连接工具DBeaver,新增连接需要oracle的jar包 ojdbc6.jar orai18n.jar ojdbc14.jar 三个文件,官网下载需要注册,提供在这里,避免注册官网的麻烦
Oracle驱动 支持 Oracle 8,Oracle 9i,Oracle 10g,Oracle 11g,Oracle 12c
oracle10g jdbc的一个包 nls_charset12.jar。 oracle11g jdbc的一个包 orai18n.jar
使用c3p0连接oracle时的驱动jar和c3p0的jar包,本人亲自验证过。具体配置信息可查找http://blog.csdn.net/hanchangning19890201
Oracle驱动 ojdbc6_g.jar ojdbc6dms_g.jar
在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle JDBC驱动来解决的?最常使用的ojdbc14.jar有多个版本,classes12.jar有多个版本你了解吗? ojdbc7.jar:支持JDK7、JDK8,支持JDBC 4.0,新的...
包含ocrs12.jar 引入了javax.sql.rowset接口, 如CachedRowSet 和 WebRowSet. 可以在 JDK 1.2, 1.3, 和 1.4下使用.