1
我写了一个查询。问题是如果我删除case语句,然后错误消失,但如果我使用case语句,则会出现错误,case语句是必需的。下面是该查询得到错误:错误:SQL问题:不一致的数据类型:预期NUMBER得到了CHAR
Select
b.branch_name AS "BRANCHES", --varchar2(100 byte)
(
Select count(temp.loan_acct_no) --varchar2(30 byte)
From
(
Select *
From
Losa_app app
inner join
losa_cust lc
on
(lc.app_ref_no = app.app_ref_no) --varchar2(20 byte)
and
lc.app_joint_T= 'P' --varchar2(10 byte)
inner join
losa_facilities lf
on
(lf.app_ref_no = app.app_ref_no) --varchar2(20 byte)
)
temp
where
temp.attend_branch = b.branch_id --NUMBER(10, 0)
) AS "No.of Account"
From
code_branch b
where
b.branch_code1 --varchar2(16 byte)
like
case :inputChannel
when 'AIBB' Then '0347%' --AIBB or ABB (varchar2(10 byte))
When 'ABB' Then '0232%'
end
在这种情况下,错误出现,但如果我删除线
where
b.branch_code1
like
case :inputChannel
when 'AIBB' Then '0347%'
When 'ABB' Then '0232%'
end
,则错误了。我认为错误是因为我的case语句返回char数据。我怎样才能将我的case语句转换为返回数字而不是char?
谢谢
这将有助于,如果你可以指定所有涉及列的数据类型。此外,你应该提供更多关于':inputChannel'参数的信息。在什么环境下运行这个SQL?(它与使用参数有关) – Codo
我在oracle中运行它。实际上当我在sqlDeveloper上运行查询时,它运行良好。但是当我把这个查询放入iReport中时在删除where子句之后,如上所述,它显示的No of Account数据类型是java.math.Bigdecimal。我已经添加了数据类型,现在可以检查... – Basit