oracle10 jdbc,Oracle 10.1.0 jdbc driver and 9i Database

Sorry for not including my error:

Hello all,

I am getting an error "Bigger type length than Maximum" when calling a stored procedure that returns a small result set. I am not working with BLOBs or CLOBs and cannot find anything on the web that addresses my specific situation.

I would greatly appreciate any help available in solving this problem.

Here is my data access object:

package my.app.access;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import oracle.jdbc.OracleTypes;

import oracle.jdbc.OracleTypes.*;

import my.app.beans.Person;

import my.app.util.Database;

public class PersonAccess {

public Person getPerson(Person person) throws SQLException, Exception {

Database db = new Database();

Connection con = db.connect();

ResultSet rs;

CallableStatement cs = con

.prepareCall("{call SP_GET_PERSON_BY_USER_ID (?,?)}");

cs.setString(1, person.getUserId());

cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);

cs.execute(); // ################### ERROR HAPPENS ON THIS LINE

rs = (ResultSet) cs.getObject(2);

if (rs.next() == true) {

person.setId(new Integer(rs.getString("id")).intValue());

person.setFirstName((String) rs.getString("first_name"));

person.setLastname((String) rs.getString("last_name"));

person.setPhoneNumber((String) rs.getString("phone_number"));

person.setEmailAddress((String) rs.getString("email_addr"));

person.setRoleId(new Integer(rs.getInt("role_id")).intValue());

//this.roleName = rs.getString("role_name");

person.setPassword((String) rs.getString("password"));

person.setAgencyId(new Integer(rs.getInt("agency_id")).intValue());

if (rs.getString("account_disabled").equals("1"))

person.setAccountDisabled(true);

if (rs.getString("pwd_change_reqd").equals("0"))

person.setPasswordChangeRequired(false);

}

return person;

}

}

And here is a test object:

package my.app.access;

import my.app.beans.*;

public class testAccess {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

PersonAccess pa = new PersonAccess();

Person person = new Person();

person.setUserId("jrlaughlin");

try {

pa.getPerson(person);

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("done");

}

}

And here is the output from this test app

java.sql.SQLException: Bigger type length than Maximum

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.T4CTTIoac.unmarshal(T4CTTIoac.java:215)

at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:121)

done

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 my.app.access.PersonAccess.getPerson(PersonAccess.java:68)

at my.app.access.testAccess.main(testAccess.java:17)

*************************************************

I am only having this problem when using the 10g jdbc driver, 9.2.0.4 and up are fine.

Thanks again.....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值