本人学习数据库时间不长,实践经验不足,想通过oracle的gateway创建db_link实现oracle访问SQlserver数据库,但是想通过oracle—jdbc来将sql中的表在oracle中创建对应的视图,但是出现...
本人学习数据库时间不长,实践经验不足,想通过oracle的gateway创建db_link实现oracle访问SQlserver数据库,但是想通过oracle—jdbc来将sql中的表在oracle中创建对应的视图,但是出现了问题解决不了,求异构数据库方面的大神解答疑惑。报错如下:
select * from Table_1@sql
java.sql.SQLException: 类型长度大于最大值
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.check_error(DatabaseError.java:885)
at oracle.jdbc.driver.T4CMAREngine.buffer2Value(T4CMAREngine.java:2202)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB4(T4CMAREngine.java:1150)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB4(T4CMAREngine.java:1125)
at oracle.jdbc.driver.T4CTTIoac.unmarshal(T4CTTIoac.java:178)
at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:122)
at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:133)
at oracle.jdbc.driver.T4CTTIdcb.receive(T4CTTIdcb.java:97)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:607)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:113)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:431)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:965)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:463)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1051)
at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatement.java:3897)
at oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:3931)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1190)
at test1.main(test1.java:23)
--------------------------------------------------------------------------------------------------------
oracle中直接访问sql,没有问题。jdbc访问oracle没问题。驱动用的是ojdbc14.jar。
请教大神报错的原因是什么,如果想继续用这种方法实现,该如何解决?
//加载数据库驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接oracle
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL1","sys as SYSDBA","sys");
//创建SQL句柄
// Statement sm = ct.createStatement();
Statement sm=ct.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//执行SQL语句返回结果集
String sqltext="select * from Table_1@sql";
System.out.println(sqltext);
ResultSet rs = sm.executeQuery(sqltext);
展开