Microsoft SQL Server 2008 R2 JDBC 드라이버를 사용하여 Microsoft SQL Server 2008 R2에서 테이블 반환 매개 변수 (배열과 같은 매개 변수)를 저장 프로 시저로 전달하는 방법? jTDS로 가능합니까?JDBC를 사용하여 Microsoft SQL Server 2008 R2에서 테이블 반환 매개 변수 (배열과 같은 매개 변수)를 저장 프로 시저에 전달하는 방법은 무엇입니까?
3
A
답변
2
현재 (3.0) Microsoft 드라이버는 TVP 전달을 지원하지 않습니다.
한 시점에서, 마이크로 소프트는 대량 복사 대 TVP에 대한 투표를 권유했다 :http://blogs.msdn.com/b/jdbcteam/archive/2011/09/22/tvp-or-bulk-copy.aspx
TVP 더 많은 표를 얻었으나, 실제로는 다있어 무슨 볼 일이다. 최신 버전의 CTP는 TVP를 지원하지 않습니다.
0
나는이 문제를 혼자서 해결했습니다. BLR 매개 변수를 사용하여 CLR .Net Stored Proc with를 만들었습니다. 이 BLOB는 직렬화 된 INT의 목록 일뿐입니다. T-SQL 또는 .Net CLR SP를 사용하여 역 직렬화 할 수 있습니다..Net CLR SP의 성능이 뛰어났습니다. 이는 내 프로젝트에서 정말로 중요했습니다.
0
이 질문은 SQL Server 2008에 관한 것이지만 실제로는 테이블 값 매개 변수를 전달할 수 없었지만 지금은 그렇습니다. 이 내용은 여기 JDBC driver manual에 설명되어 있습니다. 예를 들어 다음과 같이 수행 할 수 있습니다.
SQLServerDataTable table = new SQLServerDataTable();
table.addColumnMetadata("i" ,java.sql.Types.INTEGER);
table.addRow(1);
table.addRow(2);
table.addRow(3);
table.addRow(4);
try (SQLServerPreparedStatement stmt=
(SQLServerPreparedStatement) connection.prepareStatement(
"SELECT * FROM some_table_valued_function(?)")) {
// Magic here:
stmt.setStructured(1, "dbo.numbers", table);
try (ResultSet rs = stmt.executeQuery()) {
...
}
}