【发布时间】:2014-07-16 02:54:31
【问题描述】:
我在 SQL Server 2008 中有一个存储过程,它将数组作为输入参数。根据http://www.sommarskog.se/arrays-in-sql-2008.html,我将使用TVP。但是,这在 MSSQL JDBC 驱动程序中不受支持。因此我不能使用 SimpleJdbcCall 来执行存储过程,因为我不能传递数组参数。我转身使用 JdbcTemplate 来调用这个过程,如下所示:
StringBuilder sb = new StringBuilder();
sb.append("declare @d object_url_type;");
sb.append("insert into @d values (0, 'http://example.com', '/index.html', '');");
sb.append("insert into @d values (0, 'http://example.com', '/help.html', '');");
sb.append("exec procedure_name @objs=@d, @id=123");
jdbcTemplate.query(sb.toString(), new BeanPropertyRowMapper(ObjectData.class));
我遇到的问题是存储过程返回两个结果集。但似乎我只能使用 jdbcTemplate 检索第一个结果集。如果我可以使用 SimpleJdbcCall 很容易去除两个结果集,但不幸的是我不能使用它。我用谷歌搜索了很多,但找不到任何解决这个问题的方法。有人可以帮我吗?我想我会回去使用原始的 JDBC 方式。
【问题讨论】:
标签: sql-server spring stored-procedures