我有一个SQL函数,它返回一个对象.
select some_function(acctID) from dual;
Run Code Online (Sandbox Code Playgroud)
以上返回一个对象
[CISADM.CM_MTR_READ_OBJ]
Run Code Online (Sandbox Code Playgroud)
我需要从对象中获取单个值.
我的程序有一个方法,可以获取特定行的计数并将其转换为BigInteger:
private BigInteger getSameSatPremise(ServiceAgreement sa) {
BigInteger count = BigInteger.ZERO;
StringBuffer queryHql = new StringBuffer();
queryHql.append("from Table t1");
Query query = createQuery(queryHql.toString());
query.addResult("count", "count(distinct t1.column1)");
if (query.listSize() > 0) {
count = (BigInteger) query.firstRow();
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
当查询结果为0时,转换工作正常.但是当查询结果为2时,我得到如下所示的转换错误.
Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger
Run Code Online (Sandbox Code Playgroud)
谁能帮忙.
我有一个如下表:
acct_id----+---Bill_Id-------+--Bill_dt-----+---alt_bill_id--
12345 123451 02-JAN-2014 101
12345 123452 02-JAN-2014 102
12346 123461 02-JAN-2014 103
12347 123471 02-JAN-2014 104
Run Code Online (Sandbox Code Playgroud)
alt_bill_id
如果有两行相同,我需要获取忽略最少的数据acct_id
.在这种情况下,我需要忽略acct_id
12345和alt_bill_id 101 的行.我需要如下结果:
acct_id----+---Bill_Id-------+--Bill_dt-----+---alt_bill_id--
12345 123452 02-JAN-2014 102
12346 123461 02-JAN-2014 103
12347 123471 02-JAN-2014 104
Run Code Online (Sandbox Code Playgroud) 我有三个表格如下:
--------------------------
Account Number | AGR ID
--------------------------
111 1234
222 2234
---------------------------
--------------------------
AGR Number | Meter ID
--------------------------
1234 123
2234 223
---------------------------
---------------------------
Meter ID | Meter Read Date
---------------------------
123 2016-01-17
123 2016-03-13
223 2016-11-23
Run Code Online (Sandbox Code Playgroud)
现在我需要打印帐户ID和基于第三个表中可用的仪表读数的值.
对于上面的数据,我需要一个输出,如:
----------------------------------
Account ID | Is multiple reads
----------------------------------
111 Y
222 N
Run Code Online (Sandbox Code Playgroud)