2016-11-09 4 views
0

Java에서 MS-SQL 저장 프로 시저를 실행하려고합니다.MS SQL 및 Java : 호출 저장 프로 시저 중 테이블 변수를 찾을 수 없습니다.

프로 시저 매개 변수 중 하나는 테이블 변수입니다 (이 경우 [항목]이라고 함). 별도 스키마 (이 경우 [test])에 정의 된 프로 시저 및 테이블 변수.

프로 시저를 호출하는 동안 "com.microsoft.sqlserver.jdbc.SQLServerException : 열, 매개 변수 또는 변수 @ P1 : 데이터 형식 항목을 찾을 수 없습니다."라는 오류가 발생합니다.

SimpleJdbcCall testCall = new SimpleJdbcCall(jdbcTemplate) 
     .withSchemaName("[test]") 
     .withProcedureName("[SomeTestProcedure]") 
     .withoutProcedureColumnMetaDataAccess() 
     .declareParameters(
       new SqlParameter("Id", Types.INTEGER), 
       new SqlParameter("Items", microsoft.sql.Types.STRUCTURED)); 
testCall.compile(); 
SQLServerDataTable sdt; 
try { 
    sdt = new SQLServerDataTable(); 
    sdt.addColumnMetadata("Name", Types.NVARCHAR); 
    sdt.addColumnMetadata("Value", Types.INTEGER); 
    sdt.addRow("DEV", 1); 
    sdt.addRow("PROD", 2); 
} catch (SQLServerException e) { 
    throw new IllegalStateException(e); 
} 
testCall.execute(1, sdt); 

내가이 문제 해결에 도움을 감사하게 될 것입니다 : MS-SQL 작업을 sqljdbc - 6.0 -

나는 봄의 SimpleJdbcCall 및 Microsoft의 JDBC 드라이버를 사용했다. 감사.

답변

0

알다시피, 드라이버는 사용자에게 설정된 기본 스키마의 테이블 변수를 사용하려고합니다. 내 경우

는 [DBO는] -scheme는 기본 스키마로 설정되었다. 따라서 [dbo] -scheme 에는이 테이블 변수 [Items]이 없어서 "데이터 형식 항목을 찾을 수 없습니다."라는 오류가 발생했습니다. 사용자의 기본 스키마를 [테스트] (테이블 변수가 생성 된)로 변경 한 후에는 오류가 사라졌습니다.