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?
謝謝
這將有助於,如果你可以指定所有涉及列的數據類型。此外,你應該提供更多關於':inputChannel'參數的信息。在什麼環境下運行這個SQL?(它與使用參數有關) – Codo
我在oracle中運行它。實際上當我在sqlDeveloper上運行查詢時,它運行良好。但是當我把這個查詢放入iReport中時在刪除where子句之後,如上所述,它顯示的No of Account數據類型是java.math.Bigdecimal。我已經添加了數據類型,現在可以檢查... – Basit