2012-11-22 74 views
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?

谢谢

+0

这将有助于,如果你可以指定所有涉及列的数据类型。此外,你应该提供更多关于':inputChannel'参数的信息。在什么环境下运行这个SQL?(它与使用参数有关) – Codo

+0

我在oracle中运行它。实际上当我在sqlDeveloper上运行查询时,它运行良好。但是当我把这个查询放入iReport中时在删除where子句之后,如上所述,它显示的No of Account数据类型是java.math.Bigdecimal。我已经添加了数据类型,现在可以检查... – Basit

回答

0

完成。我请求管理员将此问题移至iReport部分。因为查询是正确的,但我把这个查询放在iReport中时做错了。其实在甲骨文,当我们想要输入,然后我们写如:inputChannel。对于iReport中的同样的事情,我们定义参数如$P{inputChannel}。所以我做错了什么是当我定义参数$P{inputChannel},那么我没有设置其Default value expression这应该是""。在iReport中发生这种错误。

我不知道如何将它移动到iReport部分,否则我自己做。对不起,但我想可能是我做了错误的查询,对不起:(

相关问题