2 qq 27478049 qq_27478049 于 2015.05.26 10:42 提问

Caused by: java.sql.SQLException: ORA-00911: 无效字符
ora
if(stat){
        sqlsb.append(" select * from (");
    }else{
        sqlsb.append("select count(*) from (");
    }
    sqlsb.append("select bb.datetime datetime,  sum(decode(bb.typevalue, '新入金', bb.inits, 0.0)) as inits1, " +
            "  sum(decode(bb.typevalue, '还款本金', bb.inits, 0.0)) as inits2, " +
            "  sum(decode(bb.typevalue, '赎回金额', bb.inits, 0.0)) as inits3, " +
            "  sum(decode(bb.typevalue, '借款金额', bb.inits, 0.0)) as inits4, " +
            "  sum(decode(bb.typevalue, '历史空闲资金', bb.inits, 0.0)) as inits5  from   (select to_char(t.start_date, 'yyyy-MM-dd') datetime, " +
            "  sum(t.amount) inits, '新入金' typevalue   from p2p_investment_capitalinfo t  where t.type = 02 " +
            "  and t.status in (01, 02, 03)  group by to_char(t.start_date, 'yyyy-MM-dd')  " +
            "  union all   select to_char(t.create_date, 'yyyy-MM-dd') datetime,  sum(t.split_capital) inits,  " +
            "  '还款本金' typevalue from clspuser.crf_p2p_capital_split_main t  where t.capital_type = 1 " +
            "  group by to_char(t.create_date, 'yyyy-MM-dd')    union all    select to_char(t.pay_date, 'yyyy-MM-dd')  datetime," +
            "  sum(t.amount) inits,  '赎回金额' typevalue   from p2p_investment_payinfodetail t       where t.is_transfer is null" +
            "  group by to_char(t.pay_date, 'yyyy-MM-dd')       union all    select to_char(t.match_date, 'yyyy-MM-dd') datetime," +
            "  sum(t.amount) inits,  '借款金额' typevalue   from p2p_investment_capital_debt t        where t.status != 06" +
            "  and t.redempt_number is null    group by to_char(t.match_date, 'yyyy-MM-dd')     union all     select to_char(t.start_date, 'yyyy-MM-dd') datetime," +
            "  sum(t.amount - nvl(t.handled_amount, 0)) inits,  '历史空闲资金' typevalue     from p2p_investment_capitalinfo t   where t.pri_number != 247478" +
            "  and t.status in (01, 02)  and t.type = 01  and t.investor_number != 165951   group by to_char(t.start_date, 'yyyy-MM-dd'))bb  where 1=1" );
    //创建时间段查询
    if(null !=po.getStartAppDate()){
        sqlsb.append("  and bb.datetime >= '"+po.getStartAppDate()+"'");
    }
    if( null != po.getEndAppDate()) {
        sqlsb.append("  and bb.datetime <= '"+po.getEndAppDate()+"'");
    }
    sqlsb.append(" group by bb.datetime   order by bb.datetime desc);");




    String sqlStr = this.getInternalAccountMoneyWarningsql(po,false);
    SQLQuery sq = this.getSession().createSQLQuery(sqlStr);
    在oracle没有错 但是hibernate 执行sql出现Caused by: java.sql.SQLException: ORA-00911: 无效字符

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.26 10:47
已采纳
 order by bb.datetime desc);"看着这最后一个;多余了,去掉试试
 改成
 order by bb.datetime desc)"
caozhy
caozhy   Ds   Rxr 2015.05.26 10:50

SQLException一般是sql语句的问题
检查有没有误用全角符号,还有查询中有没有包含特殊字符,使用的代码页是否正确。

qq_26041081
qq_26041081   2015.05.26 11:41

在数据库执行代码没错,hibernate执行sql错了,最大可能就是因为你将这些语句拼的时候拼错了。。。

Csdn user default icon
上传中...
上传图片
插入图片