2013-10-25 1 views
0

되지 않습니다 :은 java.sql.SQLException : 파라미터 번호 2는이 실행하는 동안 나는 오류를 얻고있다 OUT 매개 변수

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}"); 

2. cs.setString(1, user.getUserId()); 

3. cs.registerOutParameter(2, java.sql.Types.INTEGER); //<--- ERROR at this line 

4. cs.execute(); 

5. String lastIsertId=cs.getString(2); 

을 저장 프로 시저는 다음과 같습니다

CREATE 

    PROCEDURE `cheque_alert`.`SaveLabourDetailsHead`(IN wage_entered_by VARCHAR(10),OUT LastInsertId INT) 

    BEGIN 
    INSERT INTO `cheque_alert`.`labour_wage_head` 
      (
      `wage_entered_by`, 
      `entered_date_time`) 
    VALUES (wage_entered_by, 
     NOW()); 

      SELECT LAST_INSERT_ID() INTO LastInsertId; 

    END$$ 

DELIMITER ; 

문제를 지적 해주십시오 이 코드에서 ..

+0

프로 시저의 이름이'SaveLabourDetailsHead'이고 사용자가'SaveLabourWageDetails'를 호출하면 문제 일 수 있습니다. –

+0

그게'{? = CALL SaveLabourDetailsHead (?)}' –

+0

나는 간단한 실수를했다 .. 많은 시간을 망쳤다 .. 고맙다. –

답변

0

잘못된 절차를 호출하고 있습니다. 당신은 절차 SaveLabourDetailsHead을 가지고 있고 당신은에

1. cs = getCon1().prepareCall("{CALL SaveLabourWageDetails(?,?)}"); 
             ↑ 

변경,

1. cs = getCon1().prepareCall("{CALL SaveLabourDetailsHead(?)}"); 

설정 String 매개 변수 wage_entered_by을 요구하고있다.

0

out 매개 변수는 String 유형이지만 int 여야합니다. 이것을 시험해보십시오.

int lastIsertId=cs.getInt(2); 
관련 문제