如何与JDBCTemplate,SQL Server和预期输出进行合并

时间:2013-10-16 17:14:51

标签: java sql merge jdbctemplate

我的查询看起来像这样

MERGE dbo.myTable AS myt
USING (SELECT ? AS ID,
       ? AS Value) AS s
ON (s.id = myt.id)
WHEN MATCHED THEN
    UPDATE SET myt.ApprovalUserId = s.ApprovalUserId
WHEN NOT MATCHED THEN
    INSERT ( Value )
    VALUES  ( s.Value)
OUTPUT INSERTED.id;

我的java代码看起来像这样

jdbcTemplate.queryForInt(SQL, id, value);

但是当我试图跑步时,我得到了

java.sql.SQLException: The executeQuery method must return a result set.

我想以某种方式提取合并“INSERTED.id”给出的ID。是否有我应该关注的JDBCTemplate方法?或者我应该放弃合并,只是选择,更新和锁定吗?

我正在使用Sql Server 2012,Java 6和Spring jdbc 3.1.2.release

1 个答案:

答案 0 :(得分:0)

我的最终解决方案是扩展JdbcTemplate类“StoredProcedure”并将我的merge语句抛出到存储过程中。 execute命令返回所有存储过程结果。