得到错误错误:SQL问题:不一致的数据类型:预期NUMBER得到CHAR

时间:2012-11-22 11:44:12

标签: sql oracle11g

我写了一个查询。问题是如果我删除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?

由于

1 个答案:

答案 0 :(得分:0)

完成。我请求管理员将此问题移至iReport部分。因为查询是正确的,但我把这个查询放在iReport中时做错了。实际上在oracle中,当我们想要输入时,我们就像:inputChannel一样写。同样在iReport中我们定义了像$P{inputChannel}这样的参数。所以我做错了是当我定义参数$P{inputChannel}时,我没有设置Default value expression应该是""。在iReport中,这个错误消失了。

我不知道怎么把它移到iReport部分,否则我自己做。对不起,但我想可能是我在查询时出错了,抱歉:(