我写了一个查询。问题是如果我删除case语句然后错误消失,但如果我使用case语句然后错误来,case语句是必要的。这是查询
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?
由于
答案 0 :(得分:0)
完成。我请求管理员将此问题移至iReport部分。因为查询是正确的,但我把这个查询放在iReport中时做错了。实际上在oracle中,当我们想要输入时,我们就像:inputChannel
一样写。同样在iReport中我们定义了像$P{inputChannel}
这样的参数。所以我做错了是当我定义参数$P{inputChannel}
时,我没有设置Default value expression
应该是""
。在iReport中,这个错误消失了。
我不知道怎么把它移到iReport部分,否则我自己做。对不起,但我想可能是我在查询时出错了,抱歉:(