Oracle SQL无效数字格式异常
Oracle SQL invalid number format exception
我在执行以下查询时遇到异常:
String queryString="select CONCAT( CONCAT(invoicingCollection.settleNo, '- '),((invoicingCollection.netAmountTcy - invoicingCollection.setlAmountTcy)+( invoicingCollection.taxAmountTcy-invoicingCollection.setlTaxAmountTcy))) 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 invalid number
有人知道这个错误的可能修复方法吗?
P.S。当我在 SQL 中执行相同的操作时,开发人员得到了我想要的结果。
ORA-01722 是无效数字错误。您已尝试显式或隐式尝试将字符串转换为数字,但失败了。
您的查询也有问题。 Oracle 在 SELECT
列表中支持 table 别名 AS
,但在 FROM
列表中不支持。
试试这个更新后的查询:
String queryString="SELECT Concat(Concat(invoicingcollection.settleno, '- '), ( (invoicingcollection.netamounttcy - invoicingcollection.setlamounttcy ) + ( invoicingcollection.taxamounttcy - invoicingcollection.setltaxamounttcy ) )) FROM invoicingcollection invoicingCollection WHERE invoicingcollection.portfolio IN ( :portfolio ) ";
我在执行以下查询时遇到异常:
String queryString="select CONCAT( CONCAT(invoicingCollection.settleNo, '- '),((invoicingCollection.netAmountTcy - invoicingCollection.setlAmountTcy)+( invoicingCollection.taxAmountTcy-invoicingCollection.setlTaxAmountTcy))) 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 invalid number
有人知道这个错误的可能修复方法吗?
P.S。当我在 SQL 中执行相同的操作时,开发人员得到了我想要的结果。
ORA-01722 是无效数字错误。您已尝试显式或隐式尝试将字符串转换为数字,但失败了。
您的查询也有问题。 Oracle 在 SELECT
列表中支持 table 别名 AS
,但在 FROM
列表中不支持。
试试这个更新后的查询:
String queryString="SELECT Concat(Concat(invoicingcollection.settleno, '- '), ( (invoicingcollection.netamounttcy - invoicingcollection.setlamounttcy ) + ( invoicingcollection.taxamounttcy - invoicingcollection.setltaxamounttcy ) )) FROM invoicingcollection invoicingCollection WHERE invoicingcollection.portfolio IN ( :portfolio ) ";