java - sqljdbc4 - JDBC SQL Server:매개 변수 번호에 값이 설정되지 않았습니다.




sqljdbc4 4.2 jar (2)

11 개의 바인딩 매개 변수 (?)와 빈 매개 변수 ( , , 있습니다. 그것을 제거하여 9 개의 입력 매개 변수와 1 개의 출력 매개 변수로 프로 시저로 작업하십시오

{call test.usp_xxx_GetCompanyDetails(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}

자바 코드에서 저장 프로 시저를 호출하는 코드에서 다음과 같은 오류가 발생했습니다.

예외 추적 {} org.springframework.jdbc.UncategorizedSQLException : CallableStatementCallback; SQL에 대한 분류되지 않은 SQLException [{test.usp_xxx_GetCompanyDetails (?,?,?,?,?,?,?,?,?,?,? SQL 상태 [null]; 오류 코드 [0]; 매개 변수 번호 11에 값이 설정되어 있지 않습니다. 중첩 예외는 com.microsoft.sqlserver.jdbc.SQLServerException입니다. 값이 매개 변수 번호 11로 설정되지 않았습니다. org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate (AbstractFallbackSQLExceptionTranslator.java:84) at org.springframework.jdbc. org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate (AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:1095)에서 지원 .AbstractFallbackSQLExceptionTranslator.translate (AbstractFallbackSQLExceptionTranslator.java:81) org.springframework.jdbc.core.JdbcTemplate.call에서 (JdbcTemplate.java:1131)

응용 프로그램은 WAS 8.5.5에 배포되고 jdbc 드라이버 버전 4.2를 사용합니다. 서버를 다시 시작할 때이 문제가 다시 발생하지 않았습니다. 생성 된 다음 호출 문이 잘못된 것 같습니다. 쉼표가 연속적으로 없습니까? 그들 사이에.

{call test.usp_xxx_GetCompanyDetails (?,?,?,?,?,,?,,?,?,?,?,}}}

저장 프로 시저에는 10 개의 매개 변수가 있습니다. 다음은 저장 프로 시저의 정의입니다.

CREATE PROCEDURE [test].[usp_xxx_GetCompanyDetails]
(
    @ANumber        int,
    @CompanyId      int,
    @UserRole       varchar(15),
    @RequestId      varchar(100),
    @CompanyCode    varchar(5),
    @BaseSystem     varchar(5),
    @PType          varchar(20),    
    @PId            varchar(40),
    @IsActive       bit,     
    @responseData   xml OUT
)

다음은 저장된 proc를 호출하는 자바 코드이다. 그것은 봄 데이터를 사용하여 전화를합니다.

 private String executeProc(Integer aNumber,Integer companyId, String baseSystem, 
                String role,String companyCode,String requestId, String pType,String pId,
                boolean isActive ) throws SQLException {

            SQLXML responseData=null;
            Map<String,Object> inputParams= new HashMap<>();
            inputParams.put("ANumber", aNumber);
            inputParams.put("CompanyId", companyId);
            inputParams.put("UserRole", role);
            inputParams.put("RequestId", requestId);
            inputParams.put("CompanyCode", companyCode);
            inputParams.put("BaseSystem", baseSystem);
            inputParams.put("PType", pType);
            inputParams.put("PId", pId);
            inputParams.put("IsActive", isActive);
            inputParams.put("ResponseData", responseData);

            Map<String, Object> result = this.execute(inputParams);
            String responseXMLString = ((SQLXML) result.get("ResponseData")).getString();

            return responseXMLString;
        }

무엇이 잘못되었을 수 있습니다.


out 매개 변수를 등록해야합니다. 다음과 같이 시도해보십시오.

cs.registerOutParameter("ResponseData", java.sql.Types.VARCHAR);




websphere