2013-02-02 2 views
0

내가 ... 내 프로그램은 항상 0.0을 반환 JDBC하는 초보자가 매개 변수를 설정하려면저장 프로 시저가 밖으로 0.0

CallableStatement cs= con.prepareCall("{ call getbalance(?,?) }"); 
    cs.setInt(1, 1234); 
    //cs.setString(2, "dfdf"); 
    cs.registerOutParameter(2, Types.DOUBLE,23); 
    cs.execute(); 
    System.out.println("Balance is "+ cs.getDouble(2)); 

      CREATE PROCEDURE `getbalance`(acno int, out amt int) 
       begin 
         select bal * amt from bank WHERE accno=acno; 
       end; 

답변

1

도움입니다 항상 반환, 계좌 번호는 무엇입니까? 1 또는 1234입니까?

cs.setInt(1, 1234); 

당신이 입력하는 acno에 기록이되지 않을 수 있습니다 ...

당신이 입력 한

,

select bal * amt from bank WHERE accno=acno; 

은 당신이 모두 입력이 주어진 다음 있어야하지 및 출력 파라미터

select bal INTO amt from bank WHERE accno=acno; 

편집 SP가 될 것이다 :

CREATE PROCEDURE `getbalance`(IN acno int, OUT amt int) 
AS 
    BEGIN 
       SELECT bal INTO amt FROM bank WHERE accno=acno; 
    END; 
+0

1은 매개 변수의 색인이며 1234는 전달 된 값인 –

+0

입니다.'cs.setInt (1, 1234)'은 절대적으로 정확합니다. 해당 문에는 색인 1234가있는 매개 변수가 없습니다. –

+0

블레미! 그 부분을 알아 들었어. 그러나 OP에서 의도 한 바가 있다면 매개 변수와 나머지로 설정하는 것이 정답입니다. Bal에 amt를 곱하면 0이 반환됩니다. :-) – bonCodigo

1

변수가 필요하면이 값을 설정해야한다고 생각합니다.

Set amt = (select bal * amt from bank WHERE accno=acno);