Oracle SQL无效数字格式异常

时间:2017-03-08 02:10:07

标签: java oracle hql

我在执行以下查询时遇到异常:

String queryString="select CONCAT( CONCAT(invoicingCollection.settleNo, '- '),((invoicingCollection.netAmountTcy - invoicingCollection.setlAmountTcy)+( invoicingCollection.taxAmountTcy-invoicingCollection.setlTax‌AmountTcy))) from InvoicingCollection as " + "invoicingCollection where invoicingCollection.portfolio in (:portfolio)";

Query query = _em.createQuery(queryString);
query.setParameter("portfolio",portfolio);
List<String> querylist=query.getResultList();

我得到的错误是:

  

ORA-01722:ORA-01722无效号

有人知道这个错误的可能修复方法吗?

P.S。当我在SQL Developer中执行相同的操作时,我得到了我想要的结果。

1 个答案:

答案 0 :(得分:1)

ORA-01722 是无效的数字错误。您试图明确或隐式地尝试将字符串转换为数字,但它失败了。

您的查询也存在问题。 Oracle支持AS列表中的表别名SELECT,但不支持FROM列表中的表别名。

尝试此更新的查询:

String queryString="SELECT Concat(Concat(invoicingcollection.settleno, '- '), ( (invoicingcollection.netamounttcy - invoicingcollection.setlamounttcy ) + ( invoicingcollection.taxamounttcy - invoicingcollection.setltax‌amounttcy ) )) FROM   invoicingcollection invoicingCollection WHERE  invoicingcollection.portfolio IN ( :portfolio ) ";