2012-11-22 96 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部分,否則我自己做。對不起,但我想可能是我做了錯誤的查詢,對不起:(

相關問題