1

我写了一个查询。问题是如果我删除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 语句转换为返回 number 而不是 char ?

谢谢

4

1 回答 1

0

完毕。我请求管理员将此问题移至 iReport 部分。因为查询是正确的,但是我在将这个查询放入 iReport 时做错了。实际上,在 oracle 中,当我们想要输入时,我们会像:inputChannel. 对于 iReport 中的相同内容,我们定义参数,例如$P{inputChannel}. 所以我做错的是,当我定义参数时$P{inputChannel},我没有设置它Default value expression应该是""。执行此错误后,iReport 中消失了。

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

于 2012-11-22T13:01:30.253 回答