2012-11-22 3 views
1

쿼리를 작성했습니다. 문제는 내가 case 문을 제거한 다음 오류가 사라지지만 case 문을 사용하면 오류가 발생하고 case 문이 필요합니다. 다음은이 경우 오류의 쿼리오류가 발생했습니다 : 오류 : SQL 문제 : 일치하지 않는 데이터 유형 : 예상 번호가 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 

그런 다음 사라 오류가 발생했습니다. 내 케이스 문이 문자 데이터를 반환하기 때문에 오류가오고 있다고 생각합니다. 어떻게하면 char 대신 number를 반환하도록 case 문을 변환 할 수 있습니까?

감사합니다.

+0

관련된 모든 컬럼의 데이터 타입을 지정할 수 있다면 도움이 될 것이다. 또한,': inputChannel' 파라미터에 대한 더 많은 정보를 제공해야한다. . 어떤 환경에서이 SQL을 실행하고 있습니까? (매개 변수 사용으로 인해 관련이 있습니다.) – Codo

+0

Oracle에서 실행 중입니다. 실제로 sqlDeveloper에서 쿼리를 실행하면 정상적으로 실행됩니다. 그러나이 쿼리를 iReport에 넣으면 오류가 온다. 그리고 위에서 언급 한 where 절을 제거한 후'No of Account'의 데이터 형식은'java.math.Bigdecimal'입니다. 데이터 형식을 추가 했으므로 지금 확인할 수 있습니다. – Basit

답변

0

완료되었습니다. 관리자에게이 질문을 iReport 섹션으로 이동하도록 요청합니다. 쿼리가 올바르지 만 iReport에이 쿼리를 넣는 동안 잘못된 결과를 보였습니다. 우리가 입력을 원할 때 실제로는 oracle에서 :inputChannel과 같이 씁니다. iReport와 같은 경우 $P{inputChannel}과 같은 매개 변수를 정의합니다. 그래서 내가 잘못한 것은 내가 $P{inputChannel} 매개 변수를 정의했을 때 ""이어야하는 Default value expression을 설정하지 않았다는 것입니다. iReport에서이 오류를 수행 한 후.

iReport 섹션으로 이동하는 방법을 모르겠다. 그렇지 않으면 혼자서해야합니다. 미안하지만, 나는 미안하지만, 뭔가 잘못하고있는 쿼리일지도 모른다. (

관련 문제