美文网首页Oracle
SQL查询报错Caused exception message

SQL查询报错Caused exception message

作者: 涎涎 | 来源:发表于2020-06-01 00:24 被阅读0次

如下图所示, SQL查询时报错如下

错误信息:null
Caused exception message is: ORA-01427: 单行子查询返回多个行

错误详细堆栈信息:com.kingdee.bos.SQLDataException: null
Caused exception message is: ORA-01427: 单行子查询返回多个行

    at com.kingdee.bos.dao.query.server.SQLDataAccess.getRowSet(SQLDataAccess.java:112)
    at rpc_generate._PROXY_com_1_kingdee_1_bos_1_dao_1_query_1_server_1_ISQLDataAccess.pi4(Unknown Source)
    at rpc_generate._PROXY_com_1_kingdee_1_bos_1_dao_1_query_1_server_1_ISQLDataAccess.processInvoke(Unknown Source)
    at com.kingdee.bos.rpc.impl.ObjectProxy.processInvoke(ObjectProxy.java:177)
    at com.kingdee.bos.rpc.impl.RPCService.serviceInvoke(RPCService.java:800)
    at com.kingdee.bos.rpc.impl.RPCService.service(RPCService.java:141)
    at com.kingdee.bos.rpc.impl.ServiceDispatcher.run(ServiceDispatcher.java:153)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at com.kingdee.bos.rpc.impl.ThreadPoolExecutorReImpl.runWorker(ThreadPoolExecutorReImpl.java:1152)
    at com.kingdee.bos.rpc.impl.ThreadPoolExecutorReImpl$Worker.run(ThreadPoolExecutorReImpl.java:622)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: ORA-01427: 单行子查询返回多个行

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:744)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:809)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:849)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1125)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3338)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3383)
    at com.kingdee.bos.sql.shell.KDPreparedStatement.executeQuery(KDPreparedStatement.java:322)
    at com.apusic.jdbc.adapter.PreparedStatementHandle.executeQuery(Unknown Source)
    at com.kingdee.bos.dao.query.server.SQLDataAccess.excuteSQL(SQLDataAccess.java:190)
    at com.kingdee.bos.dao.query.server.SQLDataAccess.getRowSet(SQLDataAccess.java:80)
    ... 12 more
Caused by: java.sql.SQLException
java.sql.SQLException: ORA-01427: 单行子查询返回多个行

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:744)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:809)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:849)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1125)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3338)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3383)
    at com.kingdee.bos.sql.shell.KDPreparedStatement.executeQuery(KDPreparedStatement.java:322)
    at com.apusic.jdbc.adapter.PreparedStatementHandle.executeQuery(Unknown Source)
    at com.kingdee.bos.dao.query.server.SQLDataAccess.excuteSQL(SQLDataAccess.java:190)
    at com.kingdee.bos.dao.query.server.SQLDataAccess.getRowSet(SQLDataAccess.java:80)
    at rpc_generate._PROXY_com_1_kingdee_1_bos_1_dao_1_query_1_server_1_ISQLDataAccess.pi4(Unknown Source)
    at rpc_generate._PROXY_com_1_kingdee_1_bos_1_dao_1_query_1_server_1_ISQLDataAccess.processInvoke(Unknown Source)
    at com.kingdee.bos.rpc.impl.ObjectProxy.processInvoke(ObjectProxy.java:177)
    at com.kingdee.bos.rpc.impl.RPCService.serviceInvoke(RPCService.java:800)
    at com.kingdee.bos.rpc.impl.RPCService.service(RPCService.java:141)
    at com.kingdee.bos.rpc.impl.ServiceDispatcher.run(ServiceDispatcher.java:153)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at com.kingdee.bos.rpc.impl.ThreadPoolExecutorReImpl.runWorker(ThreadPoolExecutorReImpl.java:1152)
    at com.kingdee.bos.rpc.impl.ThreadPoolExecutorReImpl$Worker.run(ThreadPoolExecutorReImpl.java:622)
    at java.lang.Thread.run(Thread.java:662)

究其原因是因为我的sql语句有问题,如下所示

StringBuffer sql_fnumber = new StringBuffer();
sql_fnumber.append("select fnumber from T_GL_Voucher where fid = (");
sql_fnumber.append("select  FDESTOBJECTID from T_BOT_Relation where FSRCOBJECTID = '");
sql_fnumber.append(id + "')");
IRowSet rs_fnumber = SQLExecutorFactory.getRemoteInstance(sql_fnumber.toString()).executeSQL();

将其更增加 and rownum < 2 条件可以针对性的解决目前的错误

StringBuffer sql_fnumber = new StringBuffer();
sql_fnumber.append("select fnumber from T_GL_Voucher where fid = (");
sql_fnumber.append("select  FDESTOBJECTID from T_BOT_Relation where FSRCOBJECTID = '");
sql_fnumber.append(id + "' and rownum < 2)");
IRowSet rs_fnumber = SQLExecutorFactory.getRemoteInstance(sql_fnumber.toString()).executeSQL();

以上就是我关于 SQL查询报错Caused exception message is ORA-01427 单行子查询返回多个行 知识点整理与总结的全部内容,希望对你有帮助。。。。。。。


分割线


扩展知识

相关文章

网友评论

    本文标题:SQL查询报错Caused exception message

    本文链接:https://www.haomeiwen.com/subject/viexzhtx.html